Q
奇怪的类型转换
2
A
回答
5
这里有两个问题。首先是浮点值不是小数,所以3.8f
真的更像3.79999999999999999999923
或类似的东西。第二个是当转换为int时,系统将总是截断小数值,而不是四舍五入。
所以,如果你能窥视处理器,你会看到它做
3.79999999999999999999923 * 5 = 18.999999999999999999615
然后你删除非整数部分:
18
3
您正在运行到IEEE 754种限制。 f
不是恰好是3.8
,它只是稍微少一点。
1
将整数和浮点数相乘时,如果没有明确地将一个转换为另一个,则依赖于用于为您进行四舍五入的语言的隐式转换规则。有些语言会截断小数点,而有些语言会舍入十进制值以产生整数。在将两种数字类型相乘的情况下,如果您不知道该期待什么,则最好明确地施放和循环,以便确切知道所得到的结果。
相关问题
- 1. 奇怪的类型转换错误
- 2. 来自Java类型转换的奇怪输出
- 3. 奇怪的编码类型转换为UTF-8
- 4. 使用模板进行类型转换有奇怪的行为
- 5. 奇怪的java行为与强制转换为原始类型
- 6. 类型参数化和奇怪的转换异常
- 7. 奇怪的SQL Server类型转换问题
- 8. C++运算符重载奇怪的类型转换
- 9. 奇怪的输出,而不强制类型转换
- 10. 奇怪的类型转换,同时做variableOfTypeA + = variableOfTypeB
- 11. PHP:奇怪的类型转换和舍入
- 12. 奇怪的转换异常
- 13. 奇怪的类型行为
- 14. 奇怪类型的功能
- 15. 奇怪flatMap返回类型
- 16. POSIXct的奇怪转换问题
- 17. CSS3悬停转换奇怪的行为
- 18. iOS 11 prefersLargeTitles奇怪的转换
- 19. Java奇怪的细胞转换
- 20. OpenGL矩阵奇怪的转换
- 21. 奇怪的转换表达式
- 22. Swift:奇怪的向下转换失败
- 23. int转换 - 给我奇怪的数字
- 24. 奇怪的数组转换为布尔
- 25. CSS转换制作奇怪的效果?
- 26. 奇怪的行为转换日期
- 27. Qimage cv :: Mat转换奇怪的行为
- 28. 奇怪的utf8转换问题在php
- 29. CSS3旋转/变换奇怪的问题
- 30. VBA转换奇怪格式的时间
使用细胞,地板或圆形操作之一;将类型转换为整数会导致浮点数的截断(在大多数计算机语言中)。 – 2010-10-25 16:41:56
说出你正在使用的是什么编程语言,而不是让人猜测,这是一种很好的形式。 – 2010-10-25 16:46:50
哦,来吧,Pascal,它很明显是C ...或者C++ ...或者Java ...或者C#...或者什么的。 ;-) – StriplingWarrior 2010-10-25 17:20:24