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

标签 .net vb.net decimal

我有一个类,用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/

相关文章:

c# - 找不到类型或命名空间 AppServiceConnection

将二进制数转换为十进制数的 Java 程序。输入是一串零和一

php - 将字符串转换为 mySql DECIMAL 类型

.net - DataGridView 请求的 BeginUpdate/EndUpdate

c# - 获取具有值反射的所有属性

c# - Linq-to-SQL 无法反射(reflect)一个存储过程中的更改

java - VB.net 客户端和 Java 服务器之间的 TCP/IP 通信

c# - 将 SqlCommand 转换为 T-SQL 命令

javascript - 如何通过查询字符串传递和检索 Html 标签

java - Java中小数点后两位数字的数字格式