将一个非常大的浮点值截断为2位c++
truncate a very large float to 2 digits c++
需要帮助了解如何解决此问题。
我有一个浮点数(这些是动态数,不是静态数),其值为,例如:
-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
相关文章:
- 最高有效数字侧的第N位
- 如何获取一个数字的前3位
- C / C++ 移位/偏移/向左或向右移动位图?
- 对字符串进行位操作
- 如何在24位SDL_Surface上设置像素的颜色
- 将浮动的heightmap数组导出为16位原始值
- 将尾部调用void(i32,..)位转换为llvm::函数以获取FnAttribute
- C++Union/Struct位域的实现和可移植性
- 为什么C++逐位AND运算符在不同大小的操作数中表现为这样
- 将按位if条件转换为普通if条件
- 对字符数组中的元素执行逐位操作
- 将位字段导出到数组
- 将应用程序从32位移植到64位时出现问题
- 逐位操作的隐式类型转换
- 位阵列上的快速AND运算
- 64位机器上的C++内存对齐
- 一位朋友将模板函数缩写为clang和gcc
- 宽度为奇数的16位纹理为片状
- 如何打印boost多精度128位无符号整数
- 正在解码MSVC 32位版本的程序集(作业).没有手术做什么