Python - 四舍五入到最接近的 9(最接近的单位、十、百)
Python - Round to nearest 9 (nearest unit, ten, hundred)
你能想出 Python 中的函数来将任何数字四舍五入到最接近的 9 吗?
例外情况是四舍五入到最接近的单位,十、百、千等
76 --> 69
242 --> 239
8434 --> 8399
34857 --> 33999
987482 --> 986999
使用以下函数:
import math
def round_to_nearest_9(number):
number_of_fixed_digits = 1
factor = max(10, math.pow(10, math.floor(math.log10(number))
- number_of_fixed_digits))
return (number // factor) * factor - 1
注意 1:如果您将最后的 - 1
更改为 -0.01
,您甚至可以四舍五入,包括 99 美分
注 2:您想要的行为对少量来说是危险的,因为 19 -> 9
编辑:
@MarkDickinson 提出了以下修改,处理注释 2 中引用的不良行为:
def round_to_nearest_9(number):
number_of_fixed_digits = 1
factor = max(10, math.pow(10, math.floor(math.log10(number))
- number_of_fixed_digits))
return (number - 1 // factor) * factor - 1
你能想出 Python 中的函数来将任何数字四舍五入到最接近的 9 吗?
例外情况是四舍五入到最接近的单位,十、百、千等
76 --> 69
242 --> 239
8434 --> 8399
34857 --> 33999
987482 --> 986999
使用以下函数:
import math
def round_to_nearest_9(number):
number_of_fixed_digits = 1
factor = max(10, math.pow(10, math.floor(math.log10(number))
- number_of_fixed_digits))
return (number // factor) * factor - 1
注意 1:如果您将最后的 - 1
更改为 -0.01
,您甚至可以四舍五入,包括 99 美分
注 2:您想要的行为对少量来说是危险的,因为 19 -> 9
编辑: @MarkDickinson 提出了以下修改,处理注释 2 中引用的不良行为:
def round_to_nearest_9(number):
number_of_fixed_digits = 1
factor = max(10, math.pow(10, math.floor(math.log10(number))
- number_of_fixed_digits))
return (number - 1 // factor) * factor - 1