作者ufjl1785 (David)
看板java
标题Re: [问题] 大家是如何读科学记号的?
时间Wed Jan 17 01:17:44 2007
※ 引述《LPH66 (凉宫春日症候群)》之铭言:
: ※ 引述《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?
: )
其实Scanner还有很多用处啦~~
Scanner除了可以读System.in外还可以读档案
整个就是方便阿...
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 124.8.75.223