W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
整數(shù)文字由 0-9 范圍內(nèi)的數(shù)字序列組成。它們被解釋為小數(shù)。例如,69表示六十九。Solidity 中不存在八進(jìn)制文字,前導(dǎo)零無效。
十進(jìn)制小數(shù)文字由.一側(cè)至少有一個數(shù)字的 a 組成。示例包括1.和。.11.3
還支持以 的形式的科學(xué)記數(shù)法2e10,其中尾數(shù)可以是小數(shù),但指數(shù)必須是整數(shù)。字面MeE量等價于。示例包括, , , 。M * 10**E2e10-2e102e-102.5e1
下劃線可用于分隔數(shù)字文字的數(shù)字以提高可讀性。例如,十進(jìn)制123_000、十六進(jìn)制0x2eff_abde、科學(xué)十進(jìn)制記數(shù)法1_2e345_678都是有效的。下劃線只允許在兩位數(shù)之間,并且只允許一個連續(xù)的下劃線。包含下劃線的數(shù)字文字沒有添加額外的語義含義,下劃線被忽略。
數(shù)字文字表達(dá)式保持任意精度,直到它們被轉(zhuǎn)換為非文字類型(即通過將它們與數(shù)字文字表達(dá)式(如布爾文字)以外的任何內(nèi)容一起使用或通過顯式轉(zhuǎn)換)。這意味著計算不會溢出,除法不會在數(shù)字文字表達(dá)式中截斷。
例如,雖然中間結(jié)果甚至不適合機(jī)器字長,但結(jié)果為常量(類型為)。此外,結(jié)果為整數(shù)(盡管在兩者之間使用了非整數(shù))。(2**800 + 1) - 2**8001uint8.5 * 84
警告
雖然大多數(shù)運算符在應(yīng)用于文字時都會產(chǎn)生文字表達(dá)式,但有些運算符不遵循此模式:
您可能希望表達(dá)式或等價于直接使用文字 256,但實際上它們是在類型內(nèi)計算的并且可能溢出。255 + (true ? 1 : 0)255 + [1, 2, 3][0]uint8
只要操作數(shù)是整數(shù),任何可以應(yīng)用于整數(shù)的運算符也可以應(yīng)用于數(shù)字文字表達(dá)式。如果兩者中的任何一個是小數(shù),則不允許位運算,并且如果指數(shù)是小數(shù),則不允許取冪(因為這可能導(dǎo)致非有理數(shù))。
將文字?jǐn)?shù)字作為左(或基)操作數(shù)和整數(shù)類型作為右(指數(shù))操作數(shù)的移位和取冪總是在uint256(對于非負(fù)文字)或int256(對于負(fù)文字)類型中執(zhí)行,無論右(指數(shù))操作數(shù)。
警告
在 Solidity 0.4.0 之前的版本中,整數(shù)文字的除法用于截斷,但現(xiàn)在它轉(zhuǎn)換為有理數(shù),即不等于,而是等于。5 / 222.5
筆記
Solidity 對每個有理數(shù)都有一個數(shù)字文字類型。整數(shù)文字和有理數(shù)文字屬于數(shù)字文字類型。此外,所有數(shù)字文字表達(dá)式(即僅包含數(shù)字文字和運算符的表達(dá)式)都屬于數(shù)字文字類型。所以數(shù)字文字表達(dá)式和都屬于有理數(shù)三的相同數(shù)字文字類型。1 + 22 + 1
筆記
數(shù)字文字表達(dá)式在與非文字表達(dá)式一起使用時立即轉(zhuǎn)換為非文字類型。不考慮類型,分配給b 下面的表達(dá)式的值計算為整數(shù)。不過,因為ais 屬于 type uint128,所以表達(dá)式必須具有正確的類型。由于and的類型沒有通用類型,Solidity 編譯器不接受此代碼。2.5 + a2.5uint128
uint128 a = 1; uint128 b = 2.5 + a + 0.5;
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: