十进制类型舍入问题
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) 函数。
所以我有一个 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) 函数。