Re: [問題] 大家是如何讀科學記號的?
※ 引述《banyh (BB)》之銘言:
: 我都用StreamTokenizer,可是用起來有點麻煩
: st = new StreamTokenizer(new FileReader(filename));
: st.wordChars ('+','e'); // 要把+,-,e都視為文字
: st.nextToken(); // 這邊讀fraction
: x = st.nval;
: st.nextToken(); // 這邊讀exponential
: if (st.ttype == StreamTokenizer.TT_WORD)
: x = Double.parseDouble (x + st.sval);
: else
: st.pushBack();
: 例如 1.23e-3,StreamTokenizer一定會讀成 "1.23" "e-3"
: 所以要用parseDouble合起來
: 有人有更簡便的方法嗎?
個人是喜歡用Scanner的nextDouble()
剛剛試的結果Scanner會自動判斷這是科學記號 讀進正確的值
(其實API裡就有說它可以讀了:
Number syntax
<...>
Exponent :: = ( [eE] [+-]? Digit+ )
Decimal :: = ( [-+]? DecimalNumeral Exponent? )
| LocalPositivePrefix DecimalNumeral LocalPositiveSuffix Exponent?
| LocalNegativePrefix DecimalNumeral LocalNegativeSuffix Exponent?
)
--
發現1.5引進Scanner這東西真是太好用了 簡直像在用C的scanf一樣...
--
"LPH" is for "Let Program Heal us"....
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 192.192.197.115
討論串 (同標題文章)