可能重复:
1/252 = 0 in c#?
嗨我有c#的问题,我想计算一些东西。但当我得到一个表达式:
decimal test = 3 / 2;
c#表示test = 1且不是1.5
如何解决这个问题?
答案 0 :(得分:11)
您正在使用整数运算。如果您不想这样做,请将一个或两个操作数浮点值,例如
decimal test = 3m / 2m;
或
double test = 3d / 2d;
(只有一个操作数必须是非整数类型,但我相信如果你能轻易地使两者都相同,那就更清楚了。)
答案 1 :(得分:6)
您正在执行截断的整数数学运算。将一个或两个操作数转换为十进制。
decimal test = (decimal)3 / 2;
如果您使用变量而不是文字常量,则上述更适用,例如int a, b; decimal c = a / b;
您需要预先投射以避免整数除法。
否则,在使用文字常量时,请附加后缀M
以指定它是小数,以避免整数数学。
decimal test = 3M / 2M;
答案 2 :(得分:2)
不进行整数除法。
decimal test = (decimal) 3 / (decimal) 2;
答案 3 :(得分:0)
分割两个整数时,无论存储结果的变量类型如何,结果都将始终为整数。
您可以通过将其中一个操作数转换为小数来解决此问题:
decimal test = 3.0 / 2;
答案 4 :(得分:0)
当你给它3/2时,它假定两者都是int,只用整数(即3/2 = 1)计算,然后只取1并使它成为小数。
要解决您的问题,请确保至少3或2有一个小数点(即3 / 2.0)