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

时间:2014-10-15 00:23:58

标签: c++ truncate

需要帮助了解我如何解决这个问题。

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

-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

提前致谢

问候

1 个答案:

答案 0 :(得分:3)

看起来你并不熟悉科学记谱法的工作原理。

-27.8738e007是-278738000,或-2.787380e + 08

截断或舍入为“n”数字通常是指将数字四舍五入到小数点后的给定位数。这就是您发布的代码试图完成的内容。

当然,-278738000在小数点后仍然是两位数仍然是相同的数字,这就是你得到的答案。

-27.87380e + 07是2.787380e + 08

这是相同的数字。

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