LotusScript的round函数四舍五入似乎有问题,有别的方法可以四舍五入取整的吗

时间:2022-08-22 00:42:18
希望结果是四舍五入取整,但是使用round函数后发现无法四舍五入

Round(334.5,0)

result: 334

用什么方法才能得到335的结果呢。

6 个解决方案

#1


Round(a+0.5,0)

#2


Notes帮助里面说是最后一位如果是5的话,那么前面一位就会舍入到最近的偶数,所以如果不是特别要求的话,可以在最后一位后面再加一个1,也就是334.51,这样结果就是对的了。

#3


Round ( numExpr , places )

numExpr:
Any numeric expression. The number to be rounded.

places:
Any numeric expression representing the desired number of decimal places. If places is not an integer, it is converted to one.

Return value:
Round returns a Double.
If the first non-significant digit is 5, and all subsequent digits are 0, the last significant digit is rounded to the nearest even digit.

Print Round(4.35, 1)                    ' Prints 4.4
Print Round(4.45, 1)                    ' Prints 4.4
避免这样的情况,加0.5

#4


目前遇到的输入值情况是可能是整数,可能是不定位数的小数,
所以加0.5的方法只能适用于小数值>0.5的情况,如果遇到像 23.3 这种就不适用了

#5


引用 2 楼 cnscns 的回复:
Notes帮助里面说是最后一位如果是5的话,那么前面一位就会舍入到最近的偶数,所以如果不是特别要求的话,可以在最后一位后面再加一个1,也就是334.51,这样结果就是对的了。


末尾+1 这个办法不错。唯一的问题是输入值小数位不定,也可能是整数。不太清楚有什么方法可以方便的在最后加一位1的小数,目前采用了下面的笨办法,还是解决了~~

If( Int(InputValue)  < (InputValue)) Then
result = Round(Str(InputValue)&"1", 0)
Else
result = InputValue
End If

#6


引用 4 楼 fantima 的回复:
目前遇到的输入值情况是可能是整数,可能是不定位数的小数,
所以加0.5的方法只能适用于小数值>0.5的情况,如果遇到像 23.3 这种就不适用了


那就 加0.999999咯

Round(a+0.999999,0)

#1


Round(a+0.5,0)

#2


Notes帮助里面说是最后一位如果是5的话,那么前面一位就会舍入到最近的偶数,所以如果不是特别要求的话,可以在最后一位后面再加一个1,也就是334.51,这样结果就是对的了。

#3


Round ( numExpr , places )

numExpr:
Any numeric expression. The number to be rounded.

places:
Any numeric expression representing the desired number of decimal places. If places is not an integer, it is converted to one.

Return value:
Round returns a Double.
If the first non-significant digit is 5, and all subsequent digits are 0, the last significant digit is rounded to the nearest even digit.

Print Round(4.35, 1)                    ' Prints 4.4
Print Round(4.45, 1)                    ' Prints 4.4
避免这样的情况,加0.5

#4


目前遇到的输入值情况是可能是整数,可能是不定位数的小数,
所以加0.5的方法只能适用于小数值>0.5的情况,如果遇到像 23.3 这种就不适用了

#5


引用 2 楼 cnscns 的回复:
Notes帮助里面说是最后一位如果是5的话,那么前面一位就会舍入到最近的偶数,所以如果不是特别要求的话,可以在最后一位后面再加一个1,也就是334.51,这样结果就是对的了。


末尾+1 这个办法不错。唯一的问题是输入值小数位不定,也可能是整数。不太清楚有什么方法可以方便的在最后加一位1的小数,目前采用了下面的笨办法,还是解决了~~

If( Int(InputValue)  < (InputValue)) Then
result = Round(Str(InputValue)&"1", 0)
Else
result = InputValue
End If

#6


引用 4 楼 fantima 的回复:
目前遇到的输入值情况是可能是整数,可能是不定位数的小数,
所以加0.5的方法只能适用于小数值>0.5的情况,如果遇到像 23.3 这种就不适用了


那就 加0.999999咯

Round(a+0.999999,0)