【发布时间】:2021-10-25 19:06:42
【问题描述】:
我将大整数(通常为 15-30 位)存储为字符串,表示一定数量的给定 currenty(例如 ETH)。还存储了移动小数的位数。
{
"base_price"=>"5000000000000000000",
"decimals"=>18
}
我最终要查找的输出是 5.00(如果从 5000000000000000000 中取出小数点并将其移动到左侧 18 位,您会得到)。
我将如何在 Ruby 中做到这一点?
【问题讨论】:
-
是否要对字符串执行操作?或者您是否希望从运算中得到一个数值(如浮点值)?
-
val = h['base_price'].to_i / 10.0 ** h['decimals'] #=> 5.0或者您可以使用val = h['base_price'].dup.insert(h['base_price'].length - h["decimals"],'.') #=> "5.000000000000000000"使用您最喜欢的转换方式转换为数字,例如val.to_f、BigDecimal(val)、Float(val)等 -
@ScottThompson 最终格式几乎无关紧要。这是对最终用户的展示。只想在输出中将
5000000000000000000表示为5.00。 -
如果整数是
5006和"decimals"等于3怎么办?