【发布时间】:2018-07-08 18:10:12
【问题描述】:
大家好,我已经使用 c++ 工作了很长时间,这是一个困扰我的问题。
我尝试评估 pow(2,30),但答案是这样的 1.07374e+009, 而不是预期的整数形式 1073741824。我尝试将其转换为 int 或 很长,但问题是,它有时会将其截断为较低的值。为了 例如,1073741824 有时会被截断为 1073741823。我该怎么办?此外,如果数字不是 2,应该如何确保以正确的格式得到答案。
【问题讨论】:
-
首先取决于你的输出方式。以您想要的方式定义格式。其次是由于精度。
-
std::pow 总是产生浮点数、双精度数或长双精度数,无论输入类型如何。
-
方便阅读:Is floating point math broken? TL;DR 版本:结果可能类似于 1073741823.99999999。转换为分数的整数循环而不是执行任何智能舍入。
标签: c++ casting integer pow truncation