lua—Number與算術操做運算

Number

  • lua5.3版本開始,number分爲整型int(64)和雙精度浮點型float類型,對於資源受限的平臺可以使用int(32)。編程

  • 兩種類型可轉換,同時具備相同值的兩種類型相等,可以使用**math.type()**來獲取類型。markdown

  • 在lua5.3中,支持0x開頭的十六進制常量。 還支持十六進制浮點數,由小數部分和以P或P開頭的指數部分組成。編程語言

例如:函數

0xff -> 255lua

0x1p-1 -> 0.5spa

0xa.bp2 -> 42.75code

注意:這裏的p表明的2不是10 !orm

  • 可以使用%a參數,經過函數string.format(「%a」,419)對這種格式進行格式化輸出。 

例如: 資源

string.format(「%a」,419) -> 0x1.a3p+8string

雖然這種格式很難閱讀,可是這種格式能夠保留全部浮點數的精度,而且比十進制的轉換速

度更快。

算術操做運算

除了加(+)、 減(-) 、乘(*)、 除(/) 、取負數(-)等常見的算術運算外,lua語言還支持 取整除法[floor除法](//)、取模(%)、冪指運算(^)。

規則:兩個操做數都是整型,那麼結果也是整型;否做,結果就是浮點型值。 

  • 除法不遵循:因爲整數相除結果並不必定是整數,所以除法不遵循上訴規則。爲避免兩個整型值相除和兩個浮點型值相除致使結果不一致,除法運算操做的永遠是浮點數且產生浮點型值的結果。 

例如:

3.0/2.0 --> 1.5 (lua 5.3) 1.5 (lua 5.1)

3/2 --> 1.5 (lua 5.3) 1.5 (lua 5.1)

3.0/1 --> 3.0 (lua 5.3) 3 (lua 5.1)

3.0/1 --> 3.0 (lua 5.3) 3 (lua 5.1)

  • 取整除法遵循:floor除法會對獲得的商向負無窮取整,從而保證結果都是一個整數。

例如:

3//2 --> 1

3.0//2 --> 1.0

6//2 --> 3

-9//2 --> -5

  •  取模運算遵循:若是操做數是整數,那麼取模運算的結果也是整數。

  • 取模運算的定義:a % b == a – ((a // b) * b)

  • 對於整型操做數而言,取模運算的結果符號永遠與第二個操做數的符號保持一致。對於任意的正常量K,即便x是負數,表達式x%K的結果永遠在[0~K-1]之間。

         例如:

         7%3 -->  1

         -7%3 --> 2

         7%-3 -->  -2

不一樣編程語言對於負數取餘的定義不同,所獲得的結果也不同,因此小編在這裏建議儘可能不要對負數取餘。

相關文章
相關標籤/搜索