整数,但保持精确的数字
Posted
技术标签:
【中文标题】整数,但保持精确的数字【英文标题】:Round number but keep exact digits 【发布时间】:2014-03-31 02:24:18 【问题描述】:当我像这样调用这个函数 Rounded(50.080, 3) 我得到“50.08”时,如何强制保留尾随零?
Public Function Rounded(ByVal Number, ByVal Decimals)
Rounded = Int(Number * 10 ^ Decimals + 1 / 2) / 10 ^ Decimals
End Function
【问题讨论】:
你的意思是尾随零? 你不是说尾随零吗?这是一个表示问题,实际上不应该是舍入函数的关注点。 【参考方案1】:Dim RoundedString As String = FormatNumber(Rounded, Decimals, , , TriState.False)
应该为你做的
【讨论】:
这不起作用,因为它将“1542.800”转换为“1,542.800”【参考方案2】:为了您自己的健康,请打开Option Strict
和Option Explicit
,除非您真的愿意,否则请停止使用返回变量,并放弃旧版VB6 函数(如Int
)。
那么你可能可以用这样的字符串格式来破解一些东西:
Public Function Rounded(number As Decimal, decimals As Integer) As String
Return number.ToString("0." & New String("0"c, decimals))
End Function
如果可以的话,通常最好自己使用格式字符串,例如 num.ToString("0.000")
保留三位小数,然后完全删除 Rounded
。
【讨论】:
【参考方案3】:您可以使用decimal.Round(Value, 2, MidpointRounding.AwayFromZero)
,
查看更多详情here
【讨论】:
以上是关于整数,但保持精确的数字的主要内容,如果未能解决你的问题,请参考以下文章