パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

小数点はコンマかピリオドか」記事へのコメント

  • by Anonymous Coward
    国際化プログラミングでは、数値表現は日付や時間と同様にロケールによって変わるものです:
    ・数値: 1.0とか1,0とか、 -1とか1-とか
    ・通貨: 1,000,000 とか 1.000.000とか
    ・パーセント: 10% とか %10とか
    そのため、数値は各言語環境で用意している国際化フォーマット用のライブラリを使って文字列に変換します。
    標準が変わったとしても、変更があるのは所詮ライブラリの中の話です。
    # 数値フォーマットライブラリ使ってないで自分でカンマ入れて
    • 文字列と意味 (この場合数字) の変換を、国際化ライブラリで吸収する話は当然として。

      たとえば、値域を [最小値,最大値] と入力する、という仕様はどうしたものでしょうか。[1,2,3] って言われても、1.2から3までなのか。1から2.3までなのかわかんないし。

      いや、こんな仕様、変えてしまえばいいんですけどね。問題は、仕様を考えるに当たり、「世界中の表記と習慣を知っておけ」といわれたって困る、ってことな
      • 元AC (#413112) です。

        > 問題は、仕様を考えるに当たり、「世界中の表記と習慣を知っておけ」といわれたって困る、ってことなんです。

        だから国際ライブラリ化して、言語の数値リテラルと一線を画するんですよ。
        数値リテラルはあくまでリテラルであって、自然言語での数値表現とは別のものにしているんです。

        今回
        • 数字リテラルのパース・表示は国際化ライブラリにお任せ。それは了解。
          で、数字リテラルに "," が含まれる環境があるので、ふたつの数字リテラルの表示・入力を区切るのに "," を使っちゃいけない。それも了解。

          じゃ、ふたつの数字リテラルを区切るのに使ってもよい文字と、それを使ってもよい理由を教えてください。という話です。この部分は、数字リテラル本体ではないので、国際化ライ
          • > でも、今すぐの問題解決には役に立ちません。

            国際化ライブラリを使う、で現状には特に問題ないのでは。
            ようは自然言語の「数値表記文字列」とプログラミング言語文法の「数値リテラル」は最初から「別物として扱っている」ということなのですが。

            例を使うと、あるプログラミング言語では範囲を [1.2, 3]としていた場合、自然言語の数値表記標準が変わったからといって[1,2, 3]に変える必然性はまったく無いのです。
            1,2というような「リテラル」を使う言語なら文法が[1,2:3]のようにわかりやすくしているでしょう?
            • それで、一方のほう。

              「体重:56.4,58」と、体重の範囲を出力するプログラムがすでにあったとして、どうすればいいのですか? このままだと、たとえば仏文環境なら、「(体重のフランス語): 56,4,58」と表示されます。これじゃ、わけがわからないです。

              私としては、最初から自然言語の話しかしていないつもりです。
              • > 「体重:56.4,58」と、体重の範囲を出力するプログラムがすでにあったとして、どうすればいいのですか? このままだと、たとえば仏文環境なら、「(体重のフランス語): 56,4,58」と表示されます。これじゃ、わけがわからないです。

                ロケールに応じて、自分でそれぞれ用意したフォーマッタとパーザーを選択すればいいだけでしょ。
                この場合だと、パ
              • そう。結局、ロケールそれぞれにフォーマッタやパーサを用意するしかないのです。さらに言うと、入力・表示については、言語ごとに仕様を作り直さなくてはならないということ。

                というわけで、「国際化プログラミングでは、数値表現は日付や時間と同様にロケールによって変わるものです [srad.jp]」では不十分であり、ロケールによる表現の変化に合わせ、周辺の表現も適切に考えておく必要があります。

                また、「変更があるのは所詮ライブラリの中の話です [srad.jp]」だけでは収まらず、ライブラリ
              • by Anonymous Coward on 2003年10月12日 11時29分 (#413404)
                > また、「変更があるのは所詮ライブラリの中の話です [slashdot.jp]」だけでは収まらず、ライブラリの変更にあわせて周辺の表現を作り直す必要があります。

                カンマ使っているロケールはすでにあるわけで、国際化をしていればカンマ使ってないロケールのものをカンマ使ってるロケールのものにあわせるだけですむ話では。それが作り直し?

                > サポート各言語ごとに、数字や記号の使用習慣に合わせて、記号の使い方・配置の順序を考え直しましょう。というのが正しい解。だから、仕様の問題なんです。

                これって仕様なの?
                ガイドラインだとは思うけど仕様には見えないなあ。
                親コメント
              • 仕様の決め方をガイドラインというのであれば、確かにガイドラインに違いがない。表現はお任せします。それはさておき。

                以下の条件がそろった場合に限り、ロケールあわせですむことに、異論はありません。
                    o 国際化ライブラリを使っている
                    o コンマを使う文化圏の存在を前提に、全体の仕様を決めた
                でも、そんな人にロケールと国際化の説明なんて不必要。つまり、この場合、正しく、かつ無意味な意見です。

                わざわざ説明するからには、相手はこんな状態のはず。
                    o 国際化ライブラリを使っていない
                    o 使ってるんだけど、国際化ライブラリが小数点にコンマを
                        使うなんて知らずに仕様を決めている。「58,4,53」みたいに。
                そうであれば、「ロケール一発」という説明は、不足に過ぎる。少なくとも、プログラム全域にわたって、「数の表現にコンマが入っても困らない仕様になっていること」を確認しなおす必要があります。自分が考えるところの仕様の書き方 (の選択肢)、あなたの言うところのガイドラインは、その明らかに不足している部分を、多少は補ってるんでないかなと。

                今日。カンマを使っているロケールがあると知ったとして。当然、今日以降のプログラムは、世の中には小数点にカンマ・ピリオド*以外*を使っているロケールがありうることも想定しておく必要があります。また、将来、新に追加になったロケールでは、小数点はカンマでもピリオドでもない可能性があります。--- 昨日まではピリオドを知っていて - 今日はカンマを知ったから - 今日からピリオドとカンマだけ考える --- って考え方、ちょっとアホっぽい。国際化ライブラリを使うからには、プログラムを作った人が知らない、あるいは将来のロケールについてもごく自然と適応することを期待されています。

                1つめの方法。 ライブラリ使用側の仕様。がんばって、コンマ・ピリオド以外に小数点で使ってなさそうな記号を探る、国際化ライブラリがどんな記号を勝手に使っても、適応して適切に表示する。

                2つめの方法。 ライブラリ使用側の仕様。あきらめて、知っている範囲の言語だけをサポートする。

                3つめの方法。 ライブラリ作成側 (の上位の上位の上意) の仕様。世界中の小数点をコンマ・ピリオドのどちらかに統一する。こんなことをうだうだいってちゃ仕事にならないから。

                ありうべき表現をどこまでも追求する方法に従う場合、国際化ライブラリでは不十分です。たかだかふたつの数の表示というプログラムを組むにあたってさえ、既存のロケール全てを熟知の上、将来のロケールを予想する必要があります。世界中のどこかに、コンマ・ピリオドのどちらでもない小数点があるかもしれないです。

                プログラムを作る人が知っているロケールだけ表示できればいいや、とする方法を採用する場合。国際化ライブラリは、あれば便利ですが、無くったってプログラムは書けます。だって、プログラムを作る人が知ってるんでしょ。仮に使っていたとして、ロケールによっては数の表現にコンマを使いうる、ということを知らずに使ってちゃ、小数点がコンマのロケールの表示は当てにならないでしょう。先の「58,4,53」みたいな表現が出てきて、どれが元コンマでどれが元小数点か、悩んで困ることになります。小数点がコンマでもピリオドでもない場合、もっとひどいことになります。

                世界中の数字の表記を統一してしまえ、という方法を採用する場合。これは、何もしなくても勝手に国際化になる、という意味です。この立場では、数の表記は唯ひとつ、国際化ライブラリを使うなんてとんでもない、ということになります。よって、国際ライブラリの規格から、数の表記の部分がごっそりなくなります。すると、国際化ライブラリを使っていたからこそ、作り直しとなります。影響はほとんどないと思うけど。

                いずれにせよ、どの立場でも、国際化ライブラリって、不十分または不必要です。

                余談。標準が決まった時には、小数点はコロンになってるかもよ。あり得ないとは思うけど、ないとは断言できないし。
                親コメント
              • > 仏文環境なら、「(体重のフランス語): 56,4,58」と表示されます。これじゃ、わけがわからないです。
                この一文で彼が国際化プログラムを何も理解してないことが明らかですね。「いっちまんえーん」本 [amazon.co.jp]でも買って勉強してください。
              • まったくだ。御指摘感謝。何を勘違いしていたんだろう。

                ……どんな例がいいのかな。世界中の小数点がコンマで統一されたら、今まで「体重: 56.4,58」と表示されていたのが、「体重: 56,4,58」と表示されるようになります。とでも差し替えさしてください。

                それとも、対応済み英語で「weight: 56.4,58」、対応済みフランス語で「(フランス語): 56,4.58」、対応済み日本語で「体重: 56,4,58」と表示されるものが、未対応小数点コンマロケールだと「weight: 56,4,58」と表示されてしまいます (ただし、未対応ロケール時のテキストは英語を使うというソフト限定)。のほうがいいんだろうか。

                最初のコメントの人。たとえば、LC_ALLはjaのままでLC_NUMERICをコンマなやつに変えりゃいいじゃん、といっているような気がしてきた。こういう時って、日本語でも、小数点がピリオド用とコンマ用の二通り、あらかじめテキストを用意した上で、現在の小数点表示を一旦確認して、それにあわせて選択するのが正しいのかな。

                あらかじめそこまで考えてプログラムを組むのが常識なのなら、こりゃもう、常識を教えてくださいとしかいいようないです。こういう、ロケールの組み合わせによるテキスト選択って、結構ありそう。
                親コメント

クラックを法規制強化で止められると思ってる奴は頭がおかしい -- あるアレゲ人

処理中...