.NET:你能简化这个Math.Ceiling表达式吗?

Jon*_*len 1 .net c# math ceil

你能简化一下这个Math.Ceiling表达式吗?

decimal total
decimal? quantity, multiplier
int? days

total = (decimal)Math.Ceiling((double)quantity.Value * (double)days.Value * (double)multiplier);
Run Code Online (Sandbox Code Playgroud)

编辑我忘了提到这是Silverlight代码,因此所有的演员都变成了双.

Jon*_*eet 12

为什么要将所有内容转换为双倍?我会用:

total = decimal.Ceiling(quantity.Value * days.Value * multiplier.Value);
Run Code Online (Sandbox Code Playgroud)

(你可以改用Math.Ceiling(decimal)它,但我觉得decimal如果你使用它会更清楚decimal.Ceiling.)

将所有内容转换为double,在那里执行算术,然后转换回十进制很可能会丢失信息.您应该非常非常少地在双倍和十进制IMO之间进行转换.