我试图划分(float)200/(float)500
,但结果为0.0。为什么这样,我们怎么能有0.4的结果呢?非常感谢。为什么浮动除以较大的浮点数为零,以及如何避免这种情况在C#中?
1
A
回答
2
这是不可能的。我可以考虑以下情况:
- 您正在将结果强制转换为整数;在这种情况下,它被取整为0
- 200和500不是真的漂浮物,而是整数;结果将默认为整数
- 您打印浮点数的方式将其转换为整数或不显示小数值。
2
这里没什么错 - 我和安德烈亚斯在一起。
Console.WriteLine((float)200/(float)500);
Console.WriteLine("Press any key to continue");
Console.ReadKey(true);
结果:
0.4
按任意键继续
3
这是一个非常常见的错误,每个程序员都使得它至少一次。有两个类的除法运算符,它们都使用相同的符号,积分和浮点数。编译器根据操作数的类型选择使用哪个。如果均为,则左侧和右侧的操作数是不可分割的,那么您将得到一个整数除法。机器代码中的idiv指令。它截断为零并产生一个整数结果。
只要至少一个操作数是浮点数,您将在机器代码中获得fdiv指令并查找结果。简单地转换成(浮动)或(双)就足够了,就像你在你的问题中所做的一样。你只需要施放其中一个。或者使用像200f或200.0这样的浮点文字
0
我在使用Unity3D项目的MonoDevelop调试器中遇到过这个问题。以某种方式评估窗口显示1.0f/10.0f = 0长。这只是MonoDevelop IDE的一个bug。
相关问题
- 1. 浮点除以零
- 2. 为什么vim在标签的位置绘制下划线,以及如何避免这种情况?
- 3. $ wpdb-> insert()用格式保存数据。为什么?以及如何避免这种情况?
- 4. Odoo ZeroDivisionError:浮点除以零
- 5. 为什么Smarty用'?php echo'%>'替换'%>'之类的东西; ?>以及如何避免这种情况?
- 6. 为什么以及如何Mysql浮动只适用于Java?
- 7. 为什么发生ArrayIndexOutOfBoundsException以及如何在Android中避免它?
- 8. 什么是attr'gtbfieldid'以及如何避免自动填充行为?
- 9. 添加浮点数,这是为什么?
- 10. 浮点数和零比较
- 11. Coredata浮点数变为零
- 12. 元组比较'A'==('A'),如何避免这种情况?
- 13. 为什么在这种情况下
- 14. 为什么在这种情况下我得到零错误?
- 15. 为什么GCC4警告,以及如何避免它
- 16. 为什么抛出AbandonedMutextException以及如何避免它?
- 17. 为什么浮动值比较失败?
- 18. Python:ZeroDivisionError:浮点除零
- 19. 如何避免包装在CSS浮动
- 20. 为什么BinaryWriter在处置时关闭外部流,以及如何防止这种情况? (.NET C#)
- 21. 为什么我的浮动除法0.00390625?
- 22. 函数指针指向什么 - 我如何避免这种情况?
- 23. 避免浮点运算
- 24. 避免浮点溢出?
- 25. 为什么getHeight()和getWidth()在构造函数中返回0?我如何避免这种情况?
- 26. 为什么只有分子投射才能浮动以获得浮动商,同时除以两个整数?
- 27. 为什么是这种情况gc
- 28. 为什么在这个例子中他使用了浮点数?
- 29. 在这种情况下如何避免嵌套的SQL查询?
- 30. 为什么scanf为大浮点数输入错误的输入?
那么,在我的机器上'200f/500f == 0.4f'。你如何显示计算结果?你不会将它保存到'int'类型的变量中吗? – 2010-03-31 08:03:26
可能是您的代码以某种方式执行打字或转换错误。你可以发布你的代码给我们检查明显的错误吗? – 2010-03-31 08:05:32
我知道这是不可能的,但它只是做到了。我试图再次运行该程序,它工作正常。我很抱歉浪费你的时间。非常感谢。 – Jronny 2010-03-31 08:13:30