t1=RandomReal[{0,1},{10,2}]/1000000;
t1[[2,1]]=0;
t2=Map[If[#==0,"0.0000000E+00",
ToString@ScientificForm[#,{8,7},
NumberFormat->(ToString@NumberForm[1*ToExpression[#1],{8,7}]<>"E" <>
If[-10<1*ToExpression[#3]<0,"-0"<>
StringReplace[ToString[-1*ToExpression[#3]],"."->""],#3]&)]]&,t1,{2}]
Export["~/test.dat",t2]
Mathematica 教學 數字匯出格式 0.0000000E+00
由 戴忠淵 於 2013年7月26日星期五
上午12:38 發表
![作者TTLLIU (kerker) 看板Mathematica 標題數字彙出格式 0.0000000E+00 時間Thu Jul 25 21:48:40 2013 最近在使用mathematica + 別人寫的fortran做一些計算 中間的橋樑是txt檔案 (匯入/匯出) 不過問題來了 我目前已知可用: ScientificForm[t1[[1,2]],{7,7},NumberFormat->(Row[{#1,"E",#3}]&)] 輸出 4.971882E-5 的格式 (t1是我的Array) 但有辦法指定寫入txt檔時的格式嗎? 以上面的數字為例 我希望寫入txt檔的樣子為 4.9718820E-05 (小數點前1位,小數點後七位,次方正副號+兩位數字) 也就是說遇到0的時後,上面的code會給出 0.E 的格式 但我想要統一寫成 0.0000000E+00 請問有什麼好方法嗎? P.S. 1. 前面有一篇類似的問題,不過相關討論主要是import number 2. 我寫入txt檔用的指令是 WriteString -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.114.82.116 作者TTLLIU (kerker) 看板Mathematica 標題數字彙出格式 0.0000000E+00 時間Thu Jul 25 21:48:40 2013 最近在使用mathematica + 別人寫的fortran做一些計算 中間的橋樑是txt檔案 (匯入/匯出) 不過問題來了 我目前已知可用: ScientificForm[t1[[1,2]],{7,7},NumberFormat->(Row[{#1,"E",#3}]&)] 輸出 4.971882E-5 的格式 (t1是我的Array) 但有辦法指定寫入txt檔時的格式嗎? 以上面的數字為例 我希望寫入txt檔的樣子為 4.9718820E-05 (小數點前1位,小數點後七位,次方正副號+兩位數字) 也就是說遇到0的時後,上面的code會給出 0.E 的格式 但我想要統一寫成 0.0000000E+00 請問有什麼好方法嗎? P.S. 1. 前面有一篇類似的問題,不過相關討論主要是import number 2. 我寫入txt檔用的指令是 WriteString -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.114.82.116](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwBqbrYKHqyT_tHNm1ceGJj11Uvb8GzlKpaKViOewNgS1c0Lmcqxtcn7Rc0M-q-AJqaqFg1kUpXF2FItUmTUUBLHGMmw7Xa8NaY6KzXcJBrFpehVrGJuPzM5hLh58x1J9HOzjDyfJQ1II/s400/%E8%9E%A2%E5%B9%95%E5%BF%AB%E7%85%A7+2013-07-26+%E4%B8%8A%E5%8D%8812.33.53.png)

讀者回應 ( 0 意見 )
訂閱發佈留言 (Atom)
發佈留言
Please leave your name and tell me what you thought about this site. Comments, suggestions and views are welcomed.
如果這篇文章對你有幫助,那請留個訊息給我~