为什么
111111111111111111111111111110.to_s(10)
返回
"111111111111111111111111111110"
而不是以下?
4294967294
答案 0 :(得分:4)
因为111111111111111111111111111110
是一个基数为10的整数。试试这个:
0b11111111111111111111111111111110.to_s
# => "4294967294"
请注意二进制的0b
前缀。
或者,也许你想要的是:
11111111111111111111111111111110.to_s.to_i(2).to_s
# => "4294967294"
答案 1 :(得分:0)
由于Yu Hao提到了问题所在,我不再重复了。我刚刚在这里展示了,如何使用Kernel#sprintf
作为:
sprintf("%d", 0b11111111111111111111111111111110)
# => "4294967294"
When typing numbers格式字符用于描述数字系统,例如{strong}二进制和
000_0000B
或{{1}0b000_00000
或0F8H
对于十六进制数字。默认情况下,该号码被视为十进制号码。