我已经写了一个程序,在这个程序中,计算机要求输入一个浮点数。来自用户。例如,如果我正在使用0.41,则printf中的输出为0.409999999。如何解决这个错误?如何四舍五入浮点数。到小数点后两位?
回答
这很简单。用途:
printf("%.2f", 0.409999999);
这将打印0.41
大多数浮点数据类型是,其性质,不精确。他们试图在有限精度的位向量中存储实数(无限精度)。因此,您的平台上0.41的最接近的表示可能为0.409999999。
您应该阅读IEEE754浮点表示法以了解您碰到的问题。
细节:浮点数据类型非常精确,每个有限值都是精确的。使用这些类型的功能和操作是不精确的根源。 'double x = 0.41;''x'具有确切的值 - 可能是0.409999999999999975575093458246556110680103302001953125,它不等于0.41。 – chux
@chux是的,因为他们在做什么,他们很精确。但他们没有无限的精确度。如果0.41变为0.4099 999,那么它接近但不精确为0.41。一个来自整数并从第一次开始浮动的新开发人员可能不会意识到这一点;因此想知道当他从0.41开始创建一个float时,他做了什么错误,并且只能获得真正接近该值的东西......当然,如果OP是一个拥有5年以上经验的软件工程师,那是一个简单*提问。对于新手来说,没关系(所以我给出了一个真正的答案,而不是“omg,你应该知道”)。 – ArchimedesMP
- %F(打印为浮点)
- %4F(打印为具有至少4宽的宽度的浮点)
- %.4f(打印为具有精度浮点的小数点后4个字符)
- %3.2F(打印为浮点至少3宽,精度为2)
- 1. 如何将数字四舍五入到小数点后两位
- 2. 四舍五入到小数点后两位小数
- 3. 如何四舍五入到小数点后两位PHP
- 4. 不知道如何四舍五入到小数点后两位
- 5. 四舍五入到两个小数点
- 6. 四舍五入浮点数最多两位小数
- 7. 爪哇,四舍五入到小数点后两位数
- 8. 帮助计算和四舍五入到小数点后两位
- 9. 四舍五入到小数点后两位问题
- 10. 四舍五入到小数点后两位C#
- 11. 四舍五入变量到小数点后两位C#
- 12. (vb.net)四舍五入到小数点后两位
- 13. 我该如何四舍五入到小数点后一位?
- 14. 如何四舍五入到小数点后n位C++
- 15. 如何将小数点四舍五入到小数点后第十位?
- 16. 四舍五入至小数点后两位
- 17. 的Javascript四舍五入至小数点后两位
- 18. '正确'四舍五入到Python,到小数点后三位
- 19. 四舍五入的小数点浮点数
- 20. 带小数点四舍五入的PHP浮点数
- 21. 四舍五入整数浮点朝0
- 22. 四舍五入浮点数列表?
- 23. 四舍五入浮点数的问题
- 24. 如何让这个输出四舍五入到小数点后两位?
- 25. 四舍五入到小数点后第三位在Python
- 26. JavaScript四舍五入到小数点后第二位0
- 27. NSNumberFormatter只四舍五入到小数点后3位
- 28. 如何将浮点列表中的每个项目四舍五入到小数点后两位?
- 29. 浮点四舍五入0.5到0
- 30. 浮点值四舍五入到一个值小数
读取例如[这个'printf'(和家庭)参考](http://en.cppreference.com/w/c/io/fprintf)。密切关注设置字段宽度的可能性,更重要的是设置* precision *。 –
你没有显示你的printf代码。 – neuhaus
你在哪个平台上? 0.41应该没有问题,即使在scanf中存储为普通32位系统的浮点数 – Ctx