アカウント名:
パスワード:
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
※ただしPHPを除く -- あるAdmin
数値表現は文字列の話だよ (スコア:1, 興味深い)
・数値: 1.0とか1,0とか、 -1とか1-とか
・通貨: 1,000,000 とか 1.000.000とか
・パーセント: 10% とか %10とか
そのため、数値は各言語環境で用意している国際化フォーマット用のライブラリを使って文字列に変換します。
標準が変わったとしても、変更があるのは所詮ライブラリの中の話です。
# 数値フォーマットライブラリ使ってないで自分でカンマ入れて
Re:数値表現は文字列の話だよ (スコア:0)
eval があるような処理系じゃどうするの?
少なくとも perl じゃ "," を小数点として扱う方法は無いと思うな。
#やっぱ小数点は "." だよなと思う元 FORTRANer
内部データとしての数値と外部表現としての数値(Re: (スコア:0)
漢数字をevalしますか?
evalで解析したいのは 数値リテラルになってる文字列でしょ。
カンマとかピリオドとかの話は、UIとか文章とかに埋めるものでしょ。
もし同じものと思って使っているなら、それはたまたまその言語と同じ表現だったというだけのこと。
> 少なくとも perl じゃ "," を小数点として扱う方法は無いと思うな。
上でも出てるけど strtod を使え。
Re:内部データとしての数値と外部表現としての数値(R (スコア:0)
perllocaleとかにもきちんと載っている正式の方法ですね。
少し補足すると、OSの機能を使っているので、きちんとロケールがそろっているOSでないとだめですね。(cygwinとかではまだ無理)。
コード例:
use POSIX qw(locale_h);
use POSIX qw(strtod);
use locale;
$l1 = "2 / 5";
$l2 = "3,5";
$n = eval($l1);
$original_locale = setlocale(LC_NUMERIC);
setlocale(LC_NUMERIC, "de_DE");
$nstr = sprintf("%g", $n);
$m = strtod($l2);
setlocale(LC_NUMERIC, $original_locale);
print