- - PR -
javaの小数点記号ってピリオドだけですか?
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2006-03-16 15:47
小数点は国によってカンマ「,」を使用する国もあるようなのですが、
javaが認識する小数点はピリオド「.」固定なのでしょうか? javaのロケール設定や、OSの言語オプションの設定などを変えて 下記のコードを実行してみると、 String text = "0,001"; double tmp = (new Double(text)).doubleValue(); new Double(text)のところで java.lang.NumberFormatExceptionエラーが発生します。 これって、javaの小数点記号はピリオド「.」のみということなんですかね? 確証を得たかったので、色々探してみたのですが書いてあるサイトを見つける ことが出来ませんでした。 (NumberFormatを使用して記号の違いを吸収する方法は沢山みつかっています) どなたかご存知の方がいらっしゃいましたら、教えてください。 |
|
投稿日時: 2006-03-16 16:18
JDKの実装を見る限りは、ロケールを参照していません。
Javadocにも書いてありますが、 許容される文字列は、Java言語仕様に規定されています。 ロケールによって変化するようなものではありません。 |
|
投稿日時: 2006-03-16 16:44
ソースに書くリテラルはそうですね
Algol言語には(予約語がフランス語)のが、あったとか ソースに encoding はあっても、Locale は 無い。 AppleScript もありそう、ブラジル産の Lua はどうでしょう。 入出力では Locale がある。 package nn; import java.text.NumberFormat; import java.text.ParseException; import java.util.Locale; public class N { /** * @param args * @throws ParseException */ public static void main(String[] args) throws ParseException { // TODO 自動生成されたメソッド・スタブ NumberFormat nf = NumberFormat.getInstance(Locale.FRENCH); Double myNumber = (Double) nf.parse("0,001"); System.out.println(myNumber + "; "); } } [ メッセージ編集済み 編集者: MMX 編集日時 2006-03-16 17:50 ] |
|
投稿日時: 2006-03-17 16:46
かつのりさん、MMXさんご回答ありがとうございました。
読み込んだテキストをdoubleに入れてやる処理が多数あり、 何かよい方法がないのかと思っていましたが・・・ やはり、ロケールにより変換処理を行うようにしてやるしかなさそうなんですね。。。 参考になりました。 ありがとうございます。 |
1