- PR -

DecimalFormat について

投稿者投稿内容
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2007-12-04 10:32
引用:

暁さんの書き込み (2007-12-03 23:45) より:
ですが、Javaの言語仕様として空文字列を数値としては扱わない、
厳密には数値は必ず1桁以上を持つと定義されていることは知っています。
これが空文字列をparse出来ないと発言した理由です。

実際、new Integer("")やInteger.parseInt("")などが失敗しますので
ここに矛盾は無いですね。



確かにnew Integer("")やInteger.parseInt("")は失敗しますが、
「Javaの言語仕様」で定められているわけではないのでは?
APIの仕様と言語仕様は異なるものですよ。

「Javaの言語仕様」で定められているのであれば該当の章が
どこであるかを掲示できるはずです。
私も言語仕様に精通しているわけではありませんが、
具体的にjava.langパッケージ内のクラスの振る舞いが
言語仕様で定められることはなかったと記憶しています。
tarnwo
ベテラン
会議室デビュー日: 2002/10/25
投稿数: 58
投稿日時: 2007-12-04 11:54
引用:

確かにnew Integer("")やInteger.parseInt("")は失敗しますが、
「Javaの言語仕様」で定められているわけではないのでは?


興味があったので調べてみたのですが、
20.7.4, 20.7.18は違うのでしょうか?

↓参考にしたサイト
http://www.y-adagio.com/public/standards/tr_javalang/index.htm
大ベテラン
会議室デビュー日: 2006/06/28
投稿数: 116
投稿日時: 2007-12-04 23:58
引用:

nagiseさんの書き込み (2007-12-04 10:32) より:
「Javaの言語仕様」で定められているのであれば該当の章が
どこであるかを掲示できるはずです。


すみませんでした。
同じようなやり取りを連続的に2度させられて少しむっと来ていたので
雑な書き込みになってしまいました。

Java言語仕様はtarnwoさんが提示してくださった、第一版を翻訳したと思われるサイトで記述している通りです。
最新の言語仕様では記述がありませんが、これは代わりにjavadocを参照するようにとのことだと思います。

APIでは無いですが、Java言語仕様では10進数値を以下のように定義しています。
これは最新の第3版でも変わっていません。
引用:

3.10.1 Integer Literals

A decimal numeral is either the single ASCII character 0, representing the integer zero, or consists of an ASCII digit from 1 to 9, optionally followed by one or more ASCII digits from 0 to 9, representing a positive integer:

[訳]10進数は、整数0に相当する単一のASCII文字'0'か、もしくは正の整数表現として、0〜9までの1つ以上のASCII数字が後に続く1〜9までのASCII数字から成ります.


Java SDKのAPIはJava言語仕様を基に作られていると期待しています。
この関係が成り立たないのであれば、何を信用すればよいのか、そもそもJava言語仕様の存在意義すら
なくなってしまいます。

引用:

tarnwoさんの書き込み (2007-12-04 11:54) より:
引用:

確かにnew Integer("")やInteger.parseInt("")は失敗しますが、
「Javaの言語仕様」で定められているわけではないのでは?


興味があったので調べてみたのですが、
20.7.4, 20.7.18は違うのでしょうか?

↓参考にしたサイト
http://www.y-adagio.com/public/standards/tr_javalang/index.htm


サイトの提示ありがとうございます。
Sunのドキュメントを見ると、最新のJava言語仕様ではこの辺り省略されていて
見つからなかったので助かりました。
それにしてもこのサイトの翻訳、秀逸ですね。
すごく読みやすいです。

さいくろうさんとnagiseさんの書き込みから
tarnwoさんの書き込みまででスレ主は満足したようでしたのに
自分の不用意な書き込みで、無駄にスレッドを伸ばしたようなものです。
申し訳ありませんでした。
unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2007-12-05 00:31
ちなみに JavaScript で、
コード:
<script language="JavaScript">
var a = "" - 0;
window.alert("a = " + a);
</script>


と書くと、「a = 0」と表示されます。
また、Excel も、空っぽのセルを SUM などの対象とすると、0 とみなされます。

どれも Java ではないので、だからどうした、ということではないのですが。

--
unibon {B73D0144-CD2A-11DA-8E06-0050DA15BC86}

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