-2

MySQL で浮動小数点セパレータとして「,」を使用しようとしている人たちに関するいくつかの質問を見てきました。

コードでは、PHP は次のように終わる SQL クエリを記述しています。

" ... HAVING `relevance` >= {$fFloatingPointNumber}";

問題は、PHP のロケールが浮動小数点数を区切り文字として「,」を使用する文字列に変換するときに「nl_NL」として実行されるためです (例: 1,5)。

これを防ぐために私が現在行っていることは次のとおりです。

" ... HAVING `relevance` >= " . number_format($fFloatingPointNumber, 2, '.', '');

これを行うためのより良い方法はありますか?それともこれが私の最善の策ですか?

4

2 に答える 2

0

解決策 1

@Pete以外の唯一の解決策である場合に備えて、回答を投稿します。

各クエリの前にロケールをGBまたは他のピリオドで区切られたfloat / doubleロケールに切り替えてから、正しいロケールに戻すことをお勧めします。これを回避する他の方法は考えられません。

解決策 2 (最善策)

次のようにいつでもnumber_formatメソッドを使用できます

$stringversion = number_format($theFloat, 2, ".","");

これが機能することを確認してください。ドキュメントはここにありますhttp://php.net/manual/en/function.number-format.php

于 2012-07-17T10:18:57.643 に答える
0

これか似たようなものを試していただけますか?ルドヴィコ・グロッシの功績

<?php
setlocale(LC_ALL, 'nl_NL');
setlocale(LC_NUMERIC, 'en_GB'); //overwrite the decimal separator
?>
于 2012-07-17T10:11:06.807 に答える