我正在打印小数点后面的即时16位数字。我有这个:打印出16位十进制数字
"%.16f" % rand => "0.3179239550385533"
但是,这会打印出小数点和前导零。任何方式来做一个字符串格式,只会做十进制数字?谢谢!
我正在打印小数点后面的即时16位数字。我有这个:打印出16位十进制数字
"%.16f" % rand => "0.3179239550385533"
但是,这会打印出小数点和前导零。任何方式来做一个字符串格式,只会做十进制数字?谢谢!
你不需要使用%
来得到一个字符串,你可以用to_s
逃脱。然后,下标串丢掉前两个字符:
rand.to_s[2..-1]
,如果你需要16个字符,这会碰到一个问题,但rand
给你的东西,适合在较小。如果你需要担心的是,回去%
但保留下标:
("%.16f" % rand)[2 .. -1]
例如:
>> ("%.16f" % 0.23)[2 .. -1]
=> "2300000000000000"
>> ("%.16f" % rand)[2 .. -1]
=> "1764617676514221"
>> rand.to_s[2 .. -1]
=> "339851294100813"
>> "0.354572286096131"[2 .. -1]
=> "354572286096131"
您可以尝试将数字乘以10^16,然后将其四舍五入为整数并将其打印为整数。
为什么不能在0到10的16次方创建一个随机整数 - 1?
rand(10**16)
或
"%016d" % rand(10**16)