整数,但保持精确的数字

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 StrictOption 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

【讨论】:

以上是关于整数,但保持精确的数字的主要内容,如果未能解决你的问题,请参考以下文章

JS中整数除法的精确性

js判断先判断是不是是数字或者小数,只能精确到小数点后两位,如果不是就提示,要求重新填写

精确到小数点后面六位与保留六位有效数字是不是相同

js精确到指定位数的小数

精度浮点型数据精确到了几位小数呢?

ES6 之 Integer数据类型