@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

javaの小数点記号ってピリオドだけですか?

1
投稿者投稿内容
さるば
会議室デビュー日: 2005/02/03
投稿数: 16
投稿日時: 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を使用して記号の違いを吸収する方法は沢山みつかっています)

どなたかご存知の方がいらっしゃいましたら、教えてください。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2006-03-16 16:18
JDKの実装を見る限りは、ロケールを参照していません。

Javadocにも書いてありますが、
許容される文字列は、Java言語仕様に規定されています。
ロケールによって変化するようなものではありません。
MMX
ぬし
会議室デビュー日: 2001/10/26
投稿数: 861
投稿日時: 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 ]
さるば
会議室デビュー日: 2005/02/03
投稿数: 16
投稿日時: 2006-03-17 16:46
かつのりさん、MMXさんご回答ありがとうございました。

読み込んだテキストをdoubleに入れてやる処理が多数あり、
何かよい方法がないのかと思っていましたが・・・

やはり、ロケールにより変換処理を行うようにしてやるしかなさそうなんですね。。。

参考になりました。
ありがとうございます。
1

スキルアップ/キャリアアップ(JOB@IT)