爲什麼我的紅寶石給不正確的數字大小?數字是多少並不重要。輸出總是4的大小。那是什麼意思?我一直認爲它應該給出數字的位數。Ruby中的數字大小是什麼意思?
number = 14
print number
print "\n"
print number.size
輸出:
14
4
紅寶石版本
ruby 2.1.8p440 (2015-12-16 revision 53160) [i386-mingw32]
爲什麼我的紅寶石給不正確的數字大小?數字是多少並不重要。輸出總是4的大小。那是什麼意思?我一直認爲它應該給出數字的位數。Ruby中的數字大小是什麼意思?
number = 14
print number
print "\n"
print number.size
輸出:
14
4
紅寶石版本
ruby 2.1.8p440 (2015-12-16 revision 53160) [i386-mingw32]
我總是建議要檢查你不知道如何使用下列流程的方法:
檢查方法來自哪裏(使用Object#method
):
number.method(:size)
#=> #<Method: Fixnum#size>
打開文檔並瞭解它爲Fixnum#size
以及它是如何工作的。
2.1如果您使用IRB,您可以運行help 'Fixnum#size'
,以獲得正確的文檔在控制檯 2.2如果您使用撬,您可以用show-doc Fixnum#size
去(安裝pry-doc
創業板第一)
在Ruby 2.1.8中定義了方法Fixnum#size
。
從紅寶石2.4啓動它在 Integer#size
定義:
返回INT的機器表示的字節數。
您也可以在IRB中輸入'help'Fixnum#size''。 – Stefan
@Stefan酷!從來沒有使用它,因爲它不工作'pry' –
@AndreyDeineko雖然你可以在'pry'中使用'show-doc Fixnum#size'。 –
你混淆了這兩種方法String#size
:
返回
str
的字符長度。
返回的
fix
機器表示的字節數。
14
是Fixnum
類的對象,所以當你調用它size
你所得到的數字的機器表示的字節數。
如果你想知道有多少個數字中有一個數字,你可以簡單地把它先轉換爲字符串,然後調用該size
:
14.to_s
# => "14"
14.to_s.size
#=> 2
12345.to_s.size
#=> 5
或'12345.digits.size'在新的紅寶石。 – Stefan
這將是非常有益的,如果你能告訴我們(甚至更好,但是在Ruby bug跟蹤器上提出了一個關於它的bug),那麼在這個方法的文檔中*特別*是不清楚的。這樣,Ruby開發人員可以改進文檔,爲未來的讀者帶來益處。 –
數字是數量;它沒有數字。無論你如何表現,它都具有相同的價值;可以將其表示爲十進制,二進制,十六進制或甚至使用羅馬數字。它的價值仍然是一樣的。可以使用'number.to_s.length'輕鬆找到數字的位數(十進制表示)。即通過計算以十進制表示它所需的字符數(數字)。 'number.to_s(16).length'得到用於表示16位數值的位數。 – axiac
它總是不是'4':'32.size#=> 8'和'(2 ** 128 ).size#=> 17' –