Ran*_*ner 1 .net math rounding
我正在创建新模型,该模型的属性之一是 BruttoPrice (可为 null-double 类型),并且我想为该属性分配我的 Item3 (可为 null-double 类型)值,但四舍五入到小数点后两位 - 所以我使用 Math .Round 函数但不起作用
将 item3 分配给 bruttoPrice

var model = new Model
{
BruttoPrice = Math.Round(val.Item3 ?? 0, 2),
};
Run Code Online (Sandbox Code Playgroud)
我的模型输出

Jon*_*eet 11
问题是您期望 adouble能够将精确值存储到给定的十进制位数。
最接近 153.4 的精确double值是 153.400000000000005684341886080801486968994140625 - 显示为 153.40000000000001。
没有什么Math.Round可以做的了 - 没有更double接近 153.4 的值。
如果这只是出于格式化目的,则应格式化为小数点后两位,而不是将数据四舍五入。
如果实际值很重要,并且您想要精确的十进制值,则应该使用decimal而不是double。