【发布时间】:2014-06-15 22:49:48
【问题描述】:
我有以下代码将double 转换为int:
double dblValue = 7.30;
int intValue = (int)(dblValue*100); //I want intValue to store exactly 730;
std::cout << intValue;
输出:729
我知道编译器在将 dblValue 转换为 7.2999999 之前将其读取为 int。
我的问题是:是否可以通过防止向下舍入错误将其转换为730?
最好避免使用 C++11 或其他预定义函数。我在这里使用的唯一预处理器指令是<iostream>。
【问题讨论】:
-
试试
int intValue = (int)(dblValue*100.0); -
@πάνταῥεῖ 感谢您的回复,但仍然给出 729..
-
还有
ceil()函数来执行显式倒圆。 -
尝试向上取整 "int intValue = (int)((dblValue*100) + 0.5);"不完全确定这会起作用,但它应该不会受到伤害,尽管这并不漂亮。
-
对于它的价值,我得到了 730 与您发布的确切代码,编译没有标志。