将一个非常大的浮点值截断为2位c++

truncate a very large float to 2 digits c++

本文关键字:c++ 2位 一个 非常      更新时间:2023-10-16

需要帮助了解如何解决此问题。

我有一个浮点数(这些是动态数,不是静态数),其值为,例如:

-27.8738e007

我需要截断为2位数字(-27.87),但我没有成功。

我尝试过不同的形式,但数字中的"e"不起作用。。。

例如:

float number = -27.8738e007;
int decimals = 2;
number = (roundf (number * pow (10, decimals)) / pow (10, decimals));

这个返回-2.787383+008,我需要-27.87

提前感谢

问候

看起来您不熟悉科学表示法的工作原理。

-27.8738e007为-2787738000,或-2787380e+08

截断或四舍五入到"n"位通常是指将一个数字四舍五进到小数点后给定的位数。这就是您发布的代码试图实现的目标。

当然,小数点后四舍五入到两位的-278738000仍然是同一个数字,这就是你得到的答案。

-27.87380e+07为2.787380e+0.8

是同一个数字。

请参阅http://en.wikipedia.org/wiki/Scientific_notation