首页 > 解决方案 > double 或 float 的赋值和使用在 C# 中不起作用

问题描述

在 C# 中,为什么它可以正常工作:

double dr = 1.5;

但这不会:

double dr = (double)(3/2);

后者等于 1

标签: c#

解决方案


发生这种情况是因为在您进行强制转换之前(3/2)对代码位进行了评估。因此,当执行该代码时,这些值是整数,因此计算结果也是整数。这意味着结果的小数部分被丢弃,结果是一个整数值:.double1

当您将其转换为 double 时,该值中已经没有记录任何分数。将其转换为双精度不能放回已删除的信息。

如果您先将单个值转换为双精度值,或者用小数点表示它们,它将起作用:

Console.WriteLine((double)(3/2));
Console.WriteLine(((double)3/(double)2));
Console.WriteLine(3.0/2.0);

输出

1
1.5
1.5

演示:https ://dotnetfiddle.net/bJZteH


推荐阅读