【发布时间】:2021-07-05 02:30:30
【问题描述】:
我想将 float 转换为 int 去除小数点,这意味着 如果 F = 2.521,则转换为 int = 2521 使用 C++ 快速执行此操作的方法是什么?
【问题讨论】:
-
round(F * 1000.0)。注意float F = 2.521;,F不是完全 2.521。 -
使用字符串。对于大部分浮点数,它们无法准确表示:stackoverflow.com/questions/588004/…
-
除了上面 chux 所说的,舍入模式是:std::ceil、std::floor、std::trunc 或 std::round。圆形是最常见的,但可能不是您所需要的。
-
这些花车的来源是什么?
2.5是否应该映射到25和2.52映射到252?如果是这样,您可能会遇到一些精度问题,即以十进制没有具有简短精确表示的事物在二进制中具有一个。 -
@G.Azma:您的意思是“不超过 8 个小数位”(例如 123456789123456789.0 变为 123456789123456789)还是“不超过 8 个有效数字(例如 123456789123456789.0 变为 12346)?前者可能会导致结果整数溢出问题。
标签: c++ performance type-conversion