Ano*_*ous 3 php mysql floating-point casting decimal
我在MySQL中存储值时遇到了一个非常奇怪的问题.前提:
我有一个DECIMAL(15,8)用于存储货币值的表(如订单总数),但是当我尝试插入例如:
2,45545345
Run Code Online (Sandbox Code Playgroud)
这被存储为
2.00000000
Run Code Online (Sandbox Code Playgroud)
我尝试了MySQL的FORMAT/CAST函数,但仍然是相同的输出.
这是查询生成的方式:
$db->query("INSERT INTO `random_table_name` SET currency_value = '" . floatval($value) . "'");
Run Code Online (Sandbox Code Playgroud)
我也试过doubleval,但结果相同.有趣的是,几周前这段相同的代码工作正常,我不记得db结构或db类的任何变化都可能导致这种情况.
使用number_format替换,with.
像这样:
number_format($value, 8, '.') // 8 = number of decimals, . = decimal separator
Run Code Online (Sandbox Code Playgroud)
但是,您的问题似乎与当前的区域设置有关.您需要查看以下内容:setlocale()和localeconv
setlocale(LC_ALL, 'en_US'); // NOT TESTED, read up on the appropriate syntax
Run Code Online (Sandbox Code Playgroud)
这是执行此操作的适当方式,替代方法(如下所示),执行a str_replace(',', '.'),但每次要输出字符串时都必须执行相反操作.
还有另一种选择,您可以将MySQL语言环境设置为en_US.
| 归档时间: |
|
| 查看次数: |
17770 次 |
| 最近记录: |