打印出16个十进制数字

时间:2011-06-10 01:15:26

标签: ruby

我打算在小数点后打印16位数字。我有这个:

"%.16f" % rand => "0.3179239550385533"

然而,这会打印出小数点和前导零。任何方式做一个只会做十进制数字的字符串格式?谢谢!

3 个答案:

答案 0 :(得分:3)

您无需使用%来获取字符串,只需使用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"

答案 1 :(得分:3)

为什么不在0到10 ^ 16 - 1之间创建一个随机整数?

rand(10**16)

"%016d" % rand(10**16)

答案 2 :(得分:0)

您可以尝试将数字乘以10 ^ 16,然后将其四舍五入为整数并将其打印为整数。