- Julia機器學(xué)習(xí)核心編程:人人可用的高性能科學(xué)計算
- 朱紅慶
- 818字
- 2020-07-28 11:01:34
2.4 浮點數(shù)的特殊符號
值得一提的特殊浮點數(shù)如下:
? Inf和?Inf
? NaN
當一個數(shù)不是實數(shù)的時候,我們將會看到特殊浮點數(shù)。
【范例2-16】特殊浮點數(shù)
01 julia> 1/0 02 Inf 03 julia> -1/0 04 -Inf 05 julia> 0/0 06 NaN 07 julia> Inf/Inf 08 NaN
Inf表示無窮大,?Inf表示無窮小,NaN表示這不是一個實數(shù)。代碼07行使用Inf除以Inf得到的結(jié)果為NaN。
還有一些函數(shù)是十分有用的。例如,如果需要找到下一個浮點數(shù),Julia提供了如下函數(shù)可以幫助我們。
01 julia> nextfloat(0.0) 02 5.0e-324
代碼01行使用了nextfloat()函數(shù),并傳入一個Float類型的值,來顯示0.0之后的下一個浮點數(shù)。同理,使用如下函數(shù)可以找到上一個Float類型的值。
01 julia> prevfloat(0.0) 02 -5.0e-324
2.4.1 浮點數(shù)操作
我們經(jīng)常會使用浮點數(shù)來進行一些操作。
【范例2-17】浮點數(shù)操作
01 julia> x = 1.1; y = 0.1; x+y 02 1.2000000000000002
代碼01行定義了x和y兩個變量,它們的值分別為1.1和0.1。然后輸出x+y的值。該值是不準確的,當沒有對特定數(shù)字進行預(yù)期的浮點表示時,將會發(fā)生這種情況。
我們可以使用Julia提供的setprecision()函數(shù)來設(shè)置精度。
【范例2-18】setprecision()函數(shù)的使用方法
01 julia> setprecision(4) do 02 BigFloat(1) + parse(BigFloat, "0.1") 03 end 04 1.12
這個范例使用了setprecision()函數(shù),并傳入一個數(shù)字,代碼02行使用BigFloat類型的值來進行操作,得到的結(jié)果為1.12。
2.4.2 任意精度的計算
前面我們研究了Int和Float類型。還有兩種特定的數(shù)據(jù)類型可用于任意精度的計算,它們是:
? BigInt
? BigFloat
任意精度的計算是指精度數(shù)字僅受其執(zhí)行系統(tǒng)上的可用內(nèi)存限制的計算,這在某種計算場景中十分有用。
【范例2-19】任意精度的計算
如下代碼使用了BigFloat。
01 julia> BigFloat("2.99123191231231414314134") 02 2.99123191231231414314133999999999999999999999999999999999 03 9999999999999999999996 04 julia> factorial(BigInt(100)) 05 9332621544394415268169923885626670049071596826438162146859 06 2963895217599993229915608941463976156518286253697920827223 07 758251185210916864000000000000000000000000 08 julia> big(0.2) 09 2.00000000000000011102230246251565404236316680908203125000 10 0000000000000000000000e-01
代碼01行使用了BigFloat()函數(shù),傳入一個數(shù)字字符串,將返回一個BigFloat的值。代碼02行使用了一階乘函數(shù),階乘100,結(jié)果是一個特別大的數(shù)。代碼08行使用了big函數(shù)(),它也能返回一個大數(shù)。
2.4.3 使用系數(shù)編寫表達式
我們可以使用Julia直接編寫數(shù)學(xué)表達式,不需要顯式編寫乘法運算符,這讓函數(shù)計算變得非常方便。
【范例2-20】表達式
01 julia> x = 4; y = 11; 02 julia> 3x + 4y + 93 03 149 04 julia> 23(x+1) + 12(y+1) + 15 05 274
代碼01行定義了兩個變量x和y,它們的值分別為4和11。接下來輸入了一個方程表達式,Julia將會給出一個結(jié)果。這個功能使我們易于閱讀和理解方程。
- JavaScript 從入門到項目實踐(超值版)
- Effective C#:改善C#代碼的50個有效方法(原書第3版)
- VMware vSphere 6.7虛擬化架構(gòu)實戰(zhàn)指南
- Oracle JDeveloper 11gR2 Cookbook
- 自然語言處理Python進階
- 微服務(wù)架構(gòu)深度解析:原理、實踐與進階
- Spring Boot+MVC實戰(zhàn)指南
- Android移動應(yīng)用項目化教程
- Tableau Dashboard Cookbook
- Mastering ASP.NET Core 2.0
- Groovy 2 Cookbook
- SCRATCH編程課:我的游戲我做主
- 體驗之道:從需求到實踐的用戶體驗實戰(zhàn)
- Design Patterns and Best Practices in Java
- PHP 7 Programming Blueprints