C# 双精度、小数问题
为什么这个计算:双数 = (13 /(13+12+13))
等于 0?
我想应该是0.34左右!
谢谢!
Why does this calcuation: double number = (13 /(13+12+13))
equals 0?
It should be around 0.34, I think!
Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
因为您要将
int
与int
相除。你应该做Because you are dividing an
int
with anint
. You should be doing那是整数。所以它进行整数除法。因此截断为下一个较小(更接近 0)的整数。
将
.0
添加到像13.0
这样的数字,使其成为双精度。That are integers. So it does integer division. And thus truncates to the next lower(closer to 0) integer.
Add a
.0
to a number like13.0
to make it a double.因为您在公式中使用了所有
INT
- 结果也将被视为INT
。试试这个:
你的结果将是:
Because you're using all
INT
in your formula - it will be treated asINT
for the result too.Try this instead:
and your result will be:
尝试添加 .0:
(13.0 /(13+12+13))
否则您将处理整数。
Try adding a .0:
(13.0 /(13+12+13))
Otherwise you're dealing with integers.
另一个选项是将其中一个参数显式转换为 double,从而强制运行时执行 double 除法。例如:
Another option is to cast one of the arguments explicitly to double and thus forcing the runtime to perform double division. e.g. :
添加“.0”将有助于:
Adding a ".0" will help: