C# double not working as expected
我知道双精度是小数。在下面的程序中,输出是1,尽管我认为它将重复1.05次。
1 2 3 4 5 6
| static void Main (string[] args)
{
double d = 19 / 18;
Console.WriteLine(d);
Console.ReadKey();
} |
我误会了吗?
- 你误解了整数数学:Integer-19除以Integer-18得到一个整数:1。试试19.0 / 18.0。
- "我知道一个双精度数是一个小数"-不是真的。它是一个二进制浮点数,尽管这不是你的问题。您的实际问题是您正在执行整数除法,然后将结果(整数)转换为双精度除法…
- C参考划分运算符
- 来吧,无数次的问答…
- double d = 19 / 18;->double d = (double)(19 / 18);->double d = (double)(1);->double d = 1.0d;
你误解了整数数学。
1
| Integer-19 / Integer-18 results in an Integer with value 1. |
(将值赋给double与此无关。计算结果为整数)。
要修复它,请使用:
- 或双d=19d/18d;
- @xela或double d = 19.0 / 18或double d = 19 / 18.0或double d = 19d / 18或double d = 19 / 18d。
- 或overkill double d=convert.todouble(19)/convert.todouble(18);lol