__END__
def format_number_with_unit(number)
units = ['', '万', '亿', '万亿']
exponent = 0
while number >= 10000
number /= 10000.0
exponent += 1
end
# 为了避免小数点后的零过多,我们可以四舍五入到指定的小数位数
# 这里以四舍五入到小数点后一位为例
formatted_number = number#.round(1) #basic #低版本ruby无round(位数),因此不用
#formatted_number = number #b
# 如果数字小于1且大于0,我们可能想要以“0.x”的形式显示它,而不是“x”
# 但这取决于你的具体需求
if formatted_number < 1 && formatted_number > 0
formatted_number_str = formatted_number.to_s
else
# 对于整数部分,去掉尾随的.0
formatted_number = sprintf("%.3f", formatted_number)
# p formatted_number
formatted_number_str = formatted_number.to_s
end
# 如果指数为0,即原数小于1000,则不添加单位
return formatted_number_str + (exponent > 0 ? units[exponent] : '')
end
# 测试函数
p format_number_with_unit(-88888888888)
p format_number_with_unit(0.1111)
p format_number_with_unit(1234) # 输出: 1千
p format_number_with_unit(12345) # 输出: 1万
p format_number_with_unit(123456) # 输出: 12万
p format_number_with_unit(1234567) # 输出: 123万
p format_number_with_unit(12345678) # 输出: 1234万
p format_number_with_unit(123456789) # 输出: 1亿
p format_number_with_unit(1234567891) # 输出: 12亿
p format_number_with_unit(12345678912) # 输出: 123亿
p format_number_with_unit(123456789123) # 输出: 1234亿
p format_number_with_unit(1234567891234) # 输出: 1万亿
p format_number_with_unit(12345678912345) # 输出: 12万亿
#p format_number_with_unit(1000000000) # 输出: 10亿 #basic
#p format_number_with_unit(1000000000) # 输出: 1十亿
#p format_number_with_unit(100000000000) # 输出: 100十亿
#p format_number_with_unit(1000000000000) # 输出: 1万亿
#p format_number_with_unit(1234567) # 输出: 123.5万(四舍五入)#basic
#p format_number_with_unit(1234567) # 输出: 123万#b
#p format_number_with_unit(500) # 输出: 500(没有单位,因为小于1000)