leetcode 67題題解。
function addbinary(a: string, b: string): string
關於這個寫法,可能存在三個疑問:
為什麼要在a、b前面加上乙個0b
?
tostring
輸出是否正常,會不會帶上控制台輸出時結尾的n?
相容性怎麼樣?
我們也知道,js / ts裡的最大安全整數是253 - 1,超出這個範圍的整數運算就不再準確(比如著名的2**53 === 2**53 + 1
)或無法表示了。為了解決這個問題,就有了bigint提案(一開始似乎是叫integer),並且在es10中成為規範;這是bigint的歷史背景。也是因為這個原因,bigint不能和number互操作,必須進行型別轉換,而且在轉換過程中可能會丟失精度。
關於第乙個問題,如果不考慮題目中給的資料範圍,其實我們的第一反應應該是用parseint
:
function addbinary(a: string, b: string): string
在這種情況下,是不需要加上0b
的,因為已經在parseint
中指定了是二進位制。但bigint的建構函式只有乙個引數,所以需要加上這個字首來表明這是乙個代表二進位制數的字串(0b
也行)。
關於第二個問題,因為console.log
是乙個非官方規範,每個瀏覽器有自己的實現,所以控制台輸出和tostring
方法的輸出沒有必然聯絡。而且文件也說明了,bigint的tostring
不會帶上結尾的n。有乙個很有意思的事,就是bigint沒有-0
;不過跟這個話題沒什麼關係。
關於第三個問題,這個特性目前還沒有穩定,相容性只有70%多。但是主流瀏覽器已經相容,而且也有polyfill,所以相容性不是乙個很大的問題。
每天乙個python小技巧
使用場景 如果需要多次重複的產出檔案,可以通過如下的方式來根據時間戳建立新的資料夾,用來區分儲存檔案。def getcurrenttime dirpath 根據時間戳,建立指定輸出檔案 param dirpath return if os.path.exists dirpath time.strft...
每天乙個shell小知識(for)
在實際工作環境中,經常會遇到某項任務需要多次執行的情況,而每次執行時僅僅是處理的物件不一樣,其他命令完全相同。如 根據伺服器清單檢查各個主機的存活狀態 根據ip位址黑名單設定拒絕訪問的防火牆策略等。這樣繁瑣的重複任務時,if語句已經不能滿足需求。則我們需要for迴圈語句。使用for迴圈時,需要指定乙...
每天乙個CSS(box sizing
content box 是指定box的 寬度和高度分別應用到元素的內容框。在寬度和高度之外繪製元素的內邊距和邊框。示例一 設定div的外邊距為 5px,內邊距為 5px,邊框為 10px,寬為100px,高為100px,我們指定box sizing 為content box grid contain...