C#双精度、十进制问题
为什么要这样计算:双数=(13/(13+12+13)) 等于0 我想应该是0.34左右吧C#双精度、十进制问题,c#,integer-division,C#,Integer Division,为什么要这样计算:双数=(13/(13+12+13)) 等于0 我想应该是0.34左右吧 谢谢 因为您在公式中使用的是所有INT,因此结果也将被视为INT 请尝试以下方法: var result = 13.0 / (13.0 + 12.0 + 13.0) 您的结果将是: 0.34210526315789475 尝试添加。0: (13.0/(13+12+13)) 否则,您将处理整数。它们是整数。所以它进行整数除法。从而截断到下一个更低(接近0)的整数 将.0添加到像13.0这样的数字中,使其成
谢谢 因为您在公式中使用的是所有
INT
,因此结果也将被视为INT
请尝试以下方法:
var result = 13.0 / (13.0 + 12.0 + 13.0)
您的结果将是:
0.34210526315789475
尝试添加。0:
(13.0/(13+12+13))
否则,您将处理整数。它们是整数。所以它进行整数除法。从而截断到下一个更低(接近0)的整数
将
.0
添加到像13.0
这样的数字中,使其成为双精度。因为您将int
除以int
。你应该做什么
double number = (13.0 /(13.0+12.0+13.0));
另一个选项是将其中一个参数显式转换为double,从而强制运行时执行双除法。e、 g:
double result = ((double)13 / (13 + 12 + 13));
添加“.0”将有助于:
double number = (13.0 /(13.0+12.0+13.0));
可能重复的