Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/158.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将非常大的浮点值截断为2位数c++;_C++_Truncate - Fatal编程技术网

C++ 将非常大的浮点值截断为2位数c++;

C++ 将非常大的浮点值截断为2位数c++;,c++,truncate,C++,Truncate,需要帮助我理解如何解决这个问题 我有一个浮点数(这些是动态数,不是静态数),其值为,例如: float number = -27.8738e007; int decimals = 2; number = (roundf (number * pow (10, decimals)) / pow (10, decimals)); -27.8738e007 我需要截断到2位数(-27.87),但我没有成功 我尝试过不同的形式,但对数字中的“e”没有任何效果 例如: float number = -2

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

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

float number = -27.8738e007;

int decimals = 2;
number = (roundf (number * pow (10, decimals)) / pow (10, decimals));
-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为-278738000或-2.787380e+08

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

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

-27.87380e+07等于2.787380e+08

是同一个号码


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

-27.8738e007为-278738000或-2.787380e+08

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

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

-27.87380e+07等于2.787380e+08

是同一个号码


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

-27.8738e007为-278738000或-2.787380e+08

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

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

-27.87380e+07等于2.787380e+08

是同一个号码


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

-27.8738e007为-278738000或-2.787380e+08

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

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

-27.87380e+07等于2.787380e+08

是同一个号码


这是真的。我的实验室/工作区/服务器室在我的地下室。这正是我现在的位置谢谢Sam但是。。我怎样才能把科学记数法转换成普通的浮点数?科学记数法不能“转换”成任何东西。科学记数法表示浮点或双精度的值。无论是否以科学或固定精度形式表示,浮点或双精度的值都将完全相同。设置浮点或双精度值的格式时,可以通过设置std::ios_base::fixed和std::ios_base::precision(),或使用std::fixed和std::precision操纵器,将基础浮点或双精度表示转换为固定精度表示。这是真的。我的实验室/工作区/服务器室在我的地下室。这正是我现在的位置谢谢Sam但是。。我怎样才能把科学记数法转换成普通的浮点数?科学记数法不能“转换”成任何东西。科学记数法表示浮点或双精度的值。无论是否以科学或固定精度形式表示,浮点或双精度的值都将完全相同。设置浮点或双精度值的格式时,可以通过设置std::ios_base::fixed和std::ios_base::precision(),或使用std::fixed和std::precision操纵器,将基础浮点或双精度表示转换为固定精度表示。这是真的。我的实验室/工作区/服务器室在我的地下室。这正是我现在的位置谢谢Sam但是。。我怎样才能把科学记数法转换成普通的浮点数?科学记数法不能“转换”成任何东西。科学记数法表示浮点或双精度的值。无论是否以科学或固定精度形式表示,浮点或双精度的值都将完全相同。设置浮点或双精度值的格式时,可以通过设置std::ios_base::fixed和std::ios_base::precision(),或使用std::fixed和std::precision操纵器,将基础浮点或双精度表示转换为固定精度表示。这是真的。我的实验室/工作区/服务器室在我的地下室。这正是我现在的位置谢谢Sam但是。。我怎样才能把科学记数法转换成普通的浮点数?科学记数法不能“转换”成任何东西。科学记数法表示浮点或双精度的值。无论是否以科学或固定精度形式表示,浮点或双精度的值都将完全相同。格式化浮点或双精度值时,可以通过设置std::ios_base::fixed和std::ios_base::precision(),或使用std::fixed和std::precision操纵器,将基础浮点或双精度表示转换为固定精度表示。将浮点数舍入到指定的小数位数几乎没有意义。浮点表示(几乎总是)二进制;像
1.23
这样的数字甚至不能精确表示。在输出时进行四舍五入是有意义的,但在内部进行四舍五入只会丢失信息。将浮点数四舍五入到指定的小数位数很少有意义。浮点表示(几乎总是)二进制;像
1.23
这样的数字甚至不能精确表示。对输出进行舍入是有意义的,但内部舍入只会丢失信息