C#没有正确计算小数结果

jac*_*obz -6 c# decimal

(5/15)*1185应该给395.

decimal Test = (5 / 15) * 1185;
Run Code Online (Sandbox Code Playgroud)

然而,这会返回0.我做错了什么?

dee*_*see 13

5 / 15是整数除法并返回0.使用5m / 15m强制decimal.

m是C#后缀,用于向编译器表明您编写的数字是a decimal,即使它看起来像是int.您可以使用f浮动和d双打(或5.0).

虽然对后缀的话题,也有Llong但不会帮助你与你的部门,因为它也是一个整数类型.

5 // Int32
5L // Int64
5d // Double
5.0 // Double
5m // Decimal
5f // Single
Run Code Online (Sandbox Code Playgroud)


gle*_*eng 5

你需要使用浮点除法,而不是整数除法.您可以通过将其设置为浮点数或在15后面使用m(将其指定为a decimal)来获得正确的结果:

decimal Test = (5 / 15.0) * 1185;
Run Code Online (Sandbox Code Playgroud)

要么

decimal Test = (5 / 15m) * 1185;
Run Code Online (Sandbox Code Playgroud)