可能重复:
c#中的1/252 = 0?
嗨,我有一个c#的问题,我想计算一些东西.但当我得到一个表达式:
decimal test = 3 / 2;
Run Code Online (Sandbox Code Playgroud)
c#表示test = 1而不是1.5
怎么解决这个?
Jon*_*eet 11
你正在使用整数运算.如果您不想这样做,请将一个或两个操作数浮点值,例如
decimal test = 3m / 2m;
Run Code Online (Sandbox Code Playgroud)
要么
double test = 3d / 2d;
Run Code Online (Sandbox Code Playgroud)
(只有一个操作数必须是非整数类型,但我相信如果你能轻易地使两者都相同,那就更清楚了.)
你正在执行截断的整数数学.将一个或两个操作数转换为十进制.
decimal test = (decimal)3 / 2;
Run Code Online (Sandbox Code Playgroud)
如果您使用变量而不是文字常量,则上述更适用,例如int a, b; decimal c = a / b;您需要事先进行强制转换以避免整数除法.
否则,在使用文字常量时,附加后缀M以指定它是小数,以避免整数数学.
decimal test = 3M / 2M;
Run Code Online (Sandbox Code Playgroud)