我应该如何检查 .NET 十进制值是否为整数?

mat*_*mc3 5 .net vb.net decimal

我有一个用 aDecimal作为数字表示度量单位的类。只是为了简化这个例子,假设我代表厘米。我想为这个类实现一个 ToString() 方法。问题是,如果数值是整数,我只想将小数显示为整数。否则,我想将其保留为小数。因此,例如,10.5D 厘米将显示为“10.5cm”,但 7.0D 厘米应显示为“7cm”。我希望阅读起来既快速又简单。我有一个可行的解决方案,但似乎应该有更好的方法。

这是一个人为的例子,展示了我对它的第一次破解:

Public Property Units As String = "cm"
Public Property NumericValue As Decimal = 10.5D

Public Overrides Function ToString()
   Dim num As String = If(Me.NumericValue = Decimal.Ceiling(Me.NumericValue), _
                          Decimal.ToInt32(Me.NumericValue).ToString(), _ 
                          Me.NumericValue.ToString())
   Return num + Me.Units
End Function
Run Code Online (Sandbox Code Playgroud)

我有点不舒服Me.NumericValue = Decimal.Ceiling(Me.NumericValue)。关于如何更好地做到这一点的任何想法?有什么我可以用 String.Format 或 Decimal 类上的其他一些方法做的事情,可以使这更清晰并保持其性能?

Ani*_*Ani 4

你可以试试:

decimal.Truncate(myDecimal) == myDecimal
Run Code Online (Sandbox Code Playgroud)

这可能足以满足您的目的。然而,这是一个复杂的问题;简单地使用System.Decimal并不能消除与浮点表示相关的所有问题。这里的代码示例就是一个很好的例子。