比较浮点数时,我被绊倒了
💡
原文中文,约2200字,阅读约需6分钟。
📝
内容提要
程序员比较浮点数时遇到问题,通过单元测试发现是浮点数比较出了问题。最终得出结论:比较数字时先强制转换成统一类型的数字,然后比较,才能得到预期的结果。
🎯
关键要点
- 程序员在比较浮点数时遇到问题,导致不应报警时却报警。
- 通过单元测试发现问题源于浮点数比较,0.9F < 0.9 的结果不符合预期。
- C#中0.9F是单精度浮点数,而0.9是双精度浮点数,导致比较结果不同。
- 比较数字时应先强制转换为统一类型,才能得到预期结果。
- 了解IEEE浮点数标准有助于避免类似问题。
➡️