整数除法-C#双精度,小数问题
本文关键字:小数 问题 双精度 除法 -C# 整数 | 更新日期: 2023-09-27 17:59:00
为什么要进行计算:二重数=(13/(13+12+13))
等于0?
我想应该是0.34左右!
谢谢!
因为您正在用int
划分int
。你应该做
double number = (13.0 /(13.0+12.0+13.0));
它们是整数。所以它做整数除法。从而截断到下一个较低(接近0)的整数。
把一个.0
加到像13.0
这样的数字上,使它成为一个双。
因为您在公式中使用了所有INT
,所以结果也将被视为INT
。
试试这个:
var result = 13.0 / (13.0 + 12.0 + 13.0)
您的结果将是:
0.34210526315789475
尝试添加一个.0:
(13.0/(13+12+13))
否则你要处理的是整数。
另一个选项是将其中一个参数显式强制转换为double,从而迫使运行时执行double除法。例如:
double result = ((double)13 / (13 + 12 + 13));
添加".0"将有所帮助:
double number = (13.0 /(13.0+12.0+13.0));