为什么将小数乘以文字值时会出现编译错误?

问题描述 投票:0回答:3

当我尝试在下面的代码中设置

z
变量时,我得到了这个编译时错误:

运算符“*”不能应用于“double”和“decimal”类型的操作数

decimal x = 1, y = 2, z;

// There are two ways I set the z variable:
z = (x*y)*(.8 * 1.732050808m);
z = (1000 * x)/(y * 1.732050808m)* .8;

为什么会这样,我该如何解决?

c# decimal
3个回答
29
投票

一定要使用

.8m
而不是
.8


4
投票

你没说是哪一行,但我打赌这两个:

z = (x*y)*(.8 * 1.732050808m);

和:

z = (1000 * x)/(y * 1.732050808m)* .8;

请注意,您的 .8 没有“m”限定符。我看到的每个其他地方都提供了。


3
投票

在此行中:

z = (xy)(.8 * 1.732050808m);

您将 .8 指定为文字,但没有“m”后缀,文字指定为双精度。

z = (xy)(.8m * 1.732050808m);

会修复它。

© www.soinside.com 2019 - 2024. All rights reserved.