2014-10-07 72 views
1

我嘗試在Fortran中使用寫入語句。但所需的格式不會生成。 當我改變格式在Fortran的寫入語句中格式化

write(unit=28, fmt='(1X,E15.7,E15.7,E15.7)') 

write(unit=28, fmt='(1X,E15.7,E15.7,I7)') 

它會給我還有價值*******

 0.2375528E-01 0.3807880E-02  ******* 
    0.1294881E-01 0.7272966E-01  ******* 
    0.9220393E-02 -0.7748791E-01  ******* 
    0.3838744E-02 -0.1024217E+00  ******* 
    0.4709786E-02 -0.2939432E-01  ******* 

主要代碼:

post = post+1 
write(filename,'(a,i5.5,a)') 'particles', post, '.dat' 
open (unit=28, file=filename , recl=300) 
write(unit=28, fmt='(1X,E15.7,E15.7,E15.7)') (xp(i,:), i=1,npart) 
close (unit=28) 

結果表格代碼

 0.2375528E-01 0.3807880E-02  0.1E+01 
    0.1294881E-01 0.7272966E-01  0.2E+01 
    0.9220393E-02 -0.7748791E-01  0.3E+01 
    0.3838744E-02 -0.1024217E+00  0.4E+01 
    0.4709786E-02 -0.2939432E-01  0.5E+01 
這種格式

 0.2375528E-01 0.3807880E-02  1 
    0.1294881E-01 0.7272966E-01  2 
    0.9220393E-02 -0.7748791E-01  3 
    0.3838744E-02 -0.1024217E+00  4 
    0.4709786E-02 -0.2939432E-01  5 

任何人都可以建議我怎樣才能得到所需要的結果所需

所需的結果?

回答

4

轉換數字爲整數

write(unit=28, fmt='(1X,E15.7,E15.7,I7)') (xp(i,1:2),nint(xp(i,3)), i=1,npart) 
+0

由於它工作得很好:) – ksbiefr 2014-10-08 08:08:27

0

請求零個小數

write(unit=28, fmt='(1X,E15.7,E15.7,F15.0)') (xp(i,:), i=1,npart) 
+1

'Fortran運行時錯誤:精密不是格式說明「E」大於零或者「 D'' – 2014-10-07 18:02:40

+0

'write(unit = 28,fmt ='(1X,E15.7,E15.7,E15)')(xp(i,:),i = 1,npart)''不要讓我加載Fortran編譯器來解決這個問題。 「I」說明符僅用於整數類型。也許'寫(單元= 28,fmt ='(1X,E15.7,E15.7,G)')(xp(i,:),i = 1,npart)' – ja72 2014-10-07 18:03:06

+1

是的,這就是我真正推薦的,首先嚐試一下代碼,然後在發佈我的答案之前做了這些。 – 2014-10-07 18:07:00