c++ - 如何将 double 转换为整数

标签 c++ c math

这个问题很难解释,我想将 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/

相关文章:

c++ - 具有不同参数的继承类构造函数的术语是什么?

c - KLM 和用户空间中的文件

math - 轨迹-数学,c#

c - 四舍五入整数除法(而不是截断)

math - float 学有问题吗?

c++ - 如何在 Windows C++ 中处理事件

php - 如何在不轮询的情况下监视页面的变化?

c++ - 从基类指针到派生类指针的 static_cast 无效

Code::Blocks 无法识别简单 C 程序中的双重标识符 (%lf)

c - Mac OS X Lion Radiotap header 和 libpcap