我想将这种类型的数字格式插入到我的数据库中。
$value = "20.000,00";
我尝试使用
FLOAT
andDOUBLE
,但他们无法处理。剩下的唯一选择是我知道哪个有效VARCHAR
?虽然如果我稍后在处理数字时这样做并尝试从彼此中减去数字:
$value2 = "15.933,50"; $calc = $value - $value2;
$calc
现在4.067
,应该是4.066,50
——这怎么可能是正确的?
问问题
273 次
1 回答
3
对于财务数字,您应该使用DECIMAL 类型。它具有固定的精度,不受浮点数舍入问题的影响。
切勿将货币号码存储在 VARCHAR 或 FLOAT 中。
如果你想在数据库中引入你的$value
,你必须解析它,以便你可以引入数字:
$fmt = new NumberFormatter( 'da_DK', NumberFormatter::DECIMAL );
$num = $fmt->parse($value, NumberFormatter::TYPE_INT32)
要将您从数据库中获得的数字显示为“20.000,00”,您可以使用
$display_value = $fmt->format($num);
编辑 :
如果您不能使用 NumberFormatter,您可以使用它来构建一个可以在 DECIMAL 字段中引入的字符串(也可以在浮点字段中,但不要):
$v = str_replace(',', '.', str_replace('.', '', $value));
数据库可以理解的"20.000,00"
这种变化。"20000.00"
但是要求数据库将字符串解析为数字总是很危险的(稍后您可能会更改语言环境)。我建议您在 PHP 中解析数字并明确指定语言环境。
于 2012-09-23T11:46:42.290 回答