我的工作应该输出22258199.5000000这个号码,我已存储的结果在双数据类型的一些C++的问题,当我试图在使用变量的std ::法院就四舍五入到22258200.0000000,我不知道为什么就是打印这发生?有人可以解释吗?我能做些什么来避免这个问题?如何避免大浮点或双精度值的舍入?
1
A
回答
3
一个32位float
型保持大约7位十进制数字,和任何超出将被舍入到最接近的可表示值。
64位double
类型保存大约15个十进制数字,并且还四舍五入超出值。
由于您的值四舍五入到最接近的7位号码,看来您使用的是float
变量的地方。将float
值复制到double
不会恢复丢失的数字。
这并不适用于你的榜样,但它可能在其他 - 发生的舍入二进制,不是小数,所以你可能最终似乎包含更多的数字比我上面所指出的值。只要知道只有前7或15将准确的十进制。
+0
我发现问题,这是造成这个问题的cout流,我只使用double,但它使用cout打印时四舍五入。我使用cout.precision(15)来设置精度,它工作正常。 –
相关问题
- 1. 单精度大端浮点值到Python浮点数(双精度,大端)
- 2. 手动解析双精度时避免舍入误差
- 3. 在将双精度值插入字符串流时避免舍入
- 4. 舍入货币的双精度值
- 5. 在MIPS中舍入双精度浮点数
- 6. 双精度浮点值传递双精度时
- 7. 如何避免在Python中舍入浮点数?
- 8. 双精度和单精度浮点数?
- 9. 爪哇 - 双精度浮点
- 10. 浮点精度:JDBC,double和DECIMAL,如何避免丢失?
- 11. 双精度浮点数和其他浮点数精度
- 12. 如何将双精度值舍入为最接近的整数
- 13. 双精度浮点数如何转换为单精度浮点格式?
- 14. OpenCL中最小/最大浮点数或双精度常数
- 15. 浮点值的舍入
- 16. 如何比较浮点数或双精度?
- 17. 避免算法中的浮点精度错误
- 18. 四舍五入可以避免Java浮点危害吗?
- 19. 无法在Scala中写入双精度浮点和双精度浮点数的方法
- 20. 双精度和浮点的含义?
- 21. Java中的双精度浮点型
- 22. c中的浮点数和双精度#
- 23. 浮点精度和删除计划中的舍入错误
- 24. 使用java.math.BigDecimal避免浮点精度问题
- 25. 如何控制双精度计算以避免C++ linux x86_64中的舍入错误?
- 26. MongoDB浮点值精度?
- 27. 浮点和双精度恒定比较
- 28. 将双精度转换为浮点数
- 29. Objective-C浮点数/双精度
- 30. 浮点舍入,位串和二进制精度
请**用[mcve]或[SSCCE(Short,Self Contained,Correct Example)](http://sscce.org)您的问题 – NathanOliver
您几乎可以肯定地使用'float '类型,转换或某处的常量 - 这是最接近原始值的单精度值。 –
将cout的精度设置为15个有效数字:对于浮点双精度数的一个很好的经验法则。如果你使用'浮动',那么你的运气不好。 – Bathsheba