2012-08-29 63 views
0

我想在線路下面閱讀:Fortran的FORMAT語句

110134458.602 7 20957861.900

我的格式線是目前如下:

READ(7,110,END=999) L1,C1,D1 
write(*,*) L1,C1,D1 
110 FORMAT(F14.3,1x,F1.0,2x,F14.3) 

但是輸出我收到的是:

110134458.60200000 7.0000000000000000 20957861.899999999

爲什麼我有這麼多小數位,爲什麼最終值不匹配? 謝謝!

+0

[舍入錯誤?](http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html) –

+0

@arxanas:不,舍入錯誤,浮點數的典型行爲。 –

回答

2

看起來您正在正確讀取值。對於輸出的列表定向IO,編譯器通常會使用數字類型的最大位數。並非所有的十進制值都會有精確的有限精度的二進制等值 - 這可能是您所看到的第三個數字。如果對輸出使用格式語句,則指定較少的數字,則該值將變爲四捨五入並顯示正確。

+0

我修改了寫入語句以匹配固定小數點問題的讀取格式,但是現在它沒有正確讀取數字7,而是給我一個*號。任何其他想法? –

+0

我把它改成了I1而不是F1.0,問題解決了。謝謝 –