有没有办法将浮点数舍入到2点?例如:3576.7675745342556
变成3576.76
。限制浮点精度?
限制浮点精度?
回答
round(x * 100)/100.0
如果你必须让事情变得漂浮:
roundf(x * 100)/100.0
柔性版使用标准库函数:
double GetFloatPrecision(double value, double precision)
{
return (floor((value * pow(10, precision) + 0.5))/pow(10, precision));
}
请注意,因为二进制浮点不能完全表示大多数小数值,所以当您开始仔细检查较低位时,此答案将不起作用。但是,然后再也没有任何其他答案。 – 2013-05-18 01:28:48
乘以100,轮整数(反正你想要的),除以请注意,由于1/100不能精确表示为浮点数,因此请考虑保留固定精度整数。
小数定点整数很可能是这里真正的答案。 – caf 2010-08-02 02:20:27
yourFloatNumber= Float.Round(yourFloatNumber,2); // In C#
这在Java中有效。如果仔细观察,海报用c/C++标记了它。 – carlsborg 2010-08-01 21:55:37
如果您要打印出来,请改用可用的打印格式化功能。
在C++
cout << setprecision(2) << f;
四舍五入渲染到GUI,使用std :: ostringstream
不要使用浮动。如果要打印美元,请使用存储美分数的整数并在最后2个地方打印小数点。花花公子几乎总是错误的为钱,除非你做简单的计算(如天真的经济数学模型),其中只有数量的大小真正重要,你永远不会减去附近的数字。
尝试使用
std::cout<<std::setprecision(2)<<std::cout<<x;
应该作品,只有2浮点数字后出现。
对于那些你使用Google,好像我是格式化浮动钱:
#include <iomanip>
#include <sstream>
#include <string>
std::string money_format (float val)
{
std::ostringstream oss;
oss << std::fixed << std::setfill ('0') << std::setprecision (2) << val;
return oss.str();
}
// 12.3456 --> "12.35"
// 1.2 --> "1.20"
你必须返回作为一个字符串。把它放回浮标将失去精度。
试试这个,它工作在它完美
float=3576.7675745342556;
printf("%.2f",float);
改变一些对象来参观和学习的代码。
- 1. 浮点精度
- 2. C++浮点精度
- 3. 与浮点精度
- 4. haskell浮点精度
- 5. XMLSerialization浮点精度
- 6. 双精度和单精度浮点数?
- 7. 一些浮点精度和数值限制问题
- 8. SQL浮点精度限制为6位数
- 9. 在Python中控制浮点精度
- 10. 十进制到半精度浮点数
- 11. 浮点限制
- 12. 更改浮点型精度
- 13. 本征浮点精度
- 14. MongoDB浮点值精度?
- 15. 管理浮点精度
- 16. python中的浮点精度
- 17. Sprintf精度限制
- 18. 是否有可能以保真度将浮点双精度浮点双精度到两个十进制整数?
- 19. 双精度浮点数如何转换为单精度浮点格式?
- 20. 单精度大端浮点值到Python浮点数(双精度,大端)
- 21. 给定精度的gmp浮点数下限
- 22. 范围缩减精度不高的单精度浮点数
- 23. 标准双精度IEEE浮点数有多少位的精度?
- 24. 专门为双精度和浮点精度的java类
- 25. 转换单精度浮点到半精度MIPS
- 26. 双精度浮点值传递双精度时
- 27. 单精度浮点数仿真
- 28. c中的浮点数和双精度#
- 29. 如何浮点精度设置工作
- 30. Java使用浮点精度创建BufferedImage
你的意思是显示或计算? – 2010-08-01 21:30:53
3576.7675745342556变成3576.77,不是吗? – Vladimir 2010-08-01 21:43:36
@弗拉基米尔:不要紧张。舍入是一个模糊的术语,它包含了几个不同的操作,它们具有更精确的含义。向上/向下舍入/朝向零/朝向无穷远/朝向最接近的整数等 – 2010-08-01 21:51:38