doctrine のバグを mysql と組み合わせて見つけるのに時間を無駄にしまし2.5
た2.0
。私は、ドイツ語のローカルを使用すると、教義が次のようなSQLクエリを作成する原因となるaの代わりにde_DE
10進数の区切り文字が使用されることがわかりました,
.
insert into table (doubleColumn) values('2,5') -- will result in a 2.0
これを引き起こしているこの問題は、php のその行を使用して再現可能です。
$a=2.5;
printf("%s",$a); // prints out 2.5
echo $a; // prints out 2.5
setlocale(LC_ALL,"de_DE");
printf("%s",$a); // prints out 2,5
echo $a; // prints out 2,5
echo "my number " . $a; // also results in a 2,5
私の質問は、php が現在のロケールを使用して型double
を文字列に変換するのはなぜですか。Javaのように、これは当てはまりません
Double a = 2.5;
System.out.println(a.toString()); // prints out 2.5
Locale.setDefault(Locale.GERMAN);
System.out.println(a.toString()); // still prints out 2.5
PHP が現在設定されているロケールを文字列変換に使用している理由はありますか?