PHP> MySQL浮点分隔符本地化问题

时间:2012-07-17 09:58:28

标签: php mysql floating-point locale decimal-point

我已经看到一些关于人们试图让MySQL使用','作为浮点分隔符的问题 - 我正在尝试做的是停止 PHP在网站上使用它在'nl_NL'区域设置下运行。

因此,在代码中,PHP正在编写一个SQL查询,结尾如下:

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

问题是,因为PHP的语言环境在将该浮点数转换为字符串时运行为'nl_NL',所以它使用','作为分隔符(例如1,5)。

我目前正在采取的措施是:

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

有没有更好的方法 - 或者这是我最好的选择?

2 个答案:

答案 0 :(得分:0)

你可以试试这个或类似的东西吗?感谢Ludovico Grossi

<?php
setlocale(LC_ALL, 'nl_NL');
setlocale(LC_NUMERIC, 'en_GB'); //overwrite the decimal separator
?>

答案 1 :(得分:0)

解决方案1 ​​

如果除了@Pete之外它是唯一的解决方案,我会发布我的答案。

我建议在每个查询之前将语言环境切换为GB或其他一些句点分隔的float / double语言环境,然后切换回正确的语言环境。我想不出任何其他办法。

解决方案2(最佳匹配)

您始终可以使用number_format方法,如下所示

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

非常确定这会有效,文档在这里http://php.net/manual/en/function.number-format.php