2017-04-27 68 views
0

我正在學習Fortran(使用Fortran 2008標準),並且想要獨立設置我的整數部分精度和小數部分精度,以便獨立地設置變量實數。我該怎麼做呢?如何獨立設置整數和分數精度?

例如,讓我們說,我想聲明一個真實變量具有整數部分精度3和小數部分精度8.

在本說明書中上面的一個例子號碼將被說123.12345678但是1234.1234567不會滿足給定的要求。

+0

對於實數,Fortran僅根據浮點數定義。在這樣的模型中,我不清楚你對整數和小數部分的獨立精度是什麼意思。你能用一個例子來澄清嗎? [當然,你可以在某些方面使用非內在的東西。] – francescalus

+0

你是指小數部分和指數部分(而不是整數部分)? – SteveES

+0

@francescalus,我在說明中加入了一個示例 – anuvaramban

回答

1

Fortran實數是浮點數。浮點數不存儲整數部分和小數部分。他們存儲一個有效數和一個指數。

查看浮點數的工作方式http://en.wikipedia.org/wiki/Floating-point_arithmetic通常情況下,您的CPU使用一種浮點格式,您不能簡單地選擇另一種浮點格式。

您所要求的更像是固定點算術,但現代CPU和Fortran本身不支持它。 https://en.wikipedia.org/wiki/Fixed-point_arithmetic

您可以在各種庫(甚至可能是Fortran)或語言中使用它們,但它們不是本地實數。它們可能是用軟件實現的,而不是直接在CPU中實施,速度較慢。

+0

謝謝你的回答,我有一個後續:所以現在我使用selected_real_kind(16)的返回值來指定使用kind參數的精度,但是當我打印出計算結果時,它似乎使用as如果定點算術。例如: 因爲我設置了selected_real_kind(16), 3.14 ** 3.14給出了36.3378388801746960712而10.12 ** 10.12給出了14873966072.8729692074其中我將真正的變量「ar」設置爲3.14和10.12,結果運行程序時簡單地執行ar * * ar – anuvaramban

+1

這是一個誤解。並且要小心,'10.12'是一個單一的(默認)精度實常數,除非你用特定的類型聲明它。見http://stackoverflow.com/questions/6146005/is-there-a-better-double-precision-assignment-in-fortran-90 –

+0

@anuvaramban你爲什麼認爲這是定點算術? – SteveES