十进制类型舍入问题

decimal type rounding issue

所以我有一个 C# web api 端点,它 return 是一个 C# 十进制值 49.10。所以我们 return 它进入 VB.NET webforms 应用程序并且 return 结果显示为 49.1,即使它们都是原始类型 decimal。

真正让这个问题变得奇怪的是我们有 2 台本地机器,每台机器上都有相同的代码,在我的机器上它被 returned 为 49.10,但在同事的机器上它被 returned 为49.1.

真是令人费解的情况,似乎无法追根究底,想知道是否有人遇到过这种情况并知道我错过了什么。

C#模型是这样的...

[DataContract(Namespace = "")]
[Serializable]
public class TestClaim
{
   [DataMember(EmitDefaultValue = false)]
   public decimal VoucherSupplementFirstPair { get; set; }
}

VB.NET模型是这样的...

<Serializable()>
Public Class TestClaim
   Public Property VoucherSupplementFirstPair As Decimal
End Class

我问的原因是因为它在一台机器上工作而不在另一台机器上工作,所以它可能与 windows 设置有关?我以为 CLR 会处理这样的事情。

感谢任何建议。

我使用 VB.Net 已经有一段时间了。对于 double/decimal,Vb 将自动截断零,因为它们不重要。如果要显示 2 个小数点,请使用 FormatNumber(i, x) 函数。