我有一个类,用Decimal
作为数值来代表计量单位。为了简化本示例的内容,假设我表示的是厘米。我想为此类实现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
我对
Me.NumericValue = Decimal.Ceiling(Me.NumericValue)
有点不舒服。关于如何做得更好的任何想法?我可以使用String.Format或Decimal类上的其他方法来做些什么,以使其更清楚并保持其性能?
最佳答案
你可以试试:
decimal.Truncate(myDecimal) == myDecimal
这可能足以满足您的目的。但是,这是一个复杂的问题;仅仅使用
System.Decimal
并不能消除与浮点表示法有关的所有问题。代码样本here就是一个很好的例子。
关于.net - 我应该如何检查.NET十进制值是否为整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3527765/