整数除法-C#双精度,小数问题

本文关键字:小数 问题 双精度 除法 -C# 整数 | 更新日期: 2023-09-27 17:59:00

为什么要进行计算:二重数=(13/(13+12+13))

等于0?

我想应该是0.34左右!

谢谢!

整数除法-C#双精度,小数问题

因为您正在用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));