这个问题很难解释,我想将 double 转换为整数而不四舍五入小数点后的值。 例如
double a = 123.456
我要转换成
int b = 123456
我想知道有多少位,计算后移回123.456
PS:我只是想用纯数学的方法来解决这个问题,而不去计算它的性质。
最佳答案
抱歉,您的问题没有解决方案,因为数字 123.456 不存在作为 double 。四舍五入为123.4560000000000030695446184836328029632568359375,去掉小数点后这个数字显然不适合任何整数类型。
如果您希望 123.456 被视为准确的数字 123.456,那么唯一简单的方法是将其转换为字符串并从字符串中删除小数点。这可以通过类似的东西来实现
snprintf(buf, sizeof buf, "%.13f", 123.456);
然而,实际上计算出要将其打印到的位置的数量是相当困难的。如果你使用太多,你最终会得到我上面显示的精确值的一部分。如果你使用的太少,那么很明显你会放弃你想要保留的地方。
关于c++ - 如何将 double 转换为整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17481213/