有一种聪明的方式来获取
result == 22.000000000000000000
从这些值开始?
str = "22000000000000000000"
decimals = 18
另一个例子:
str = "4500000000001"
decimals = 8
result == 45000.00000001
答案 0 :(得分:2)
采取以上所有评论:
"%0.#{decimals}f" % (str.to_f / 10 ** decimals)
但它聪明吗?可能不是......它可能会产生不正确的结果,例如使用"22000000000000000001"
会导致"22.000000000000000000"
,尽管它确实会在原始问题中使用示例值生成预期结果。
这是另一个选项,可以产生与上面完全相同的结果,但更紧凑,并且总会产生预期的结果:
str.insert(-decimals - 1, ".")
您可以使用.to_f
将这两者转换为浮点数,但结果将始终为22.0
,而不是原始问题的预期值。