Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带逗号而非点的十进制数(php和sql)_Php_Sql - Fatal编程技术网

带逗号而非点的十进制数(php和sql)

带逗号而非点的十进制数(php和sql),php,sql,Php,Sql,我正在做一个加法和小数的小应用程序。点与小数一起使用是正常的,但是我如何用逗号作为输入写入十进制数(543,35而不是543.35),然后用点将其更改为数据库(mysql)?然后用逗号从数据库中打印出来。原因是,在芬兰,在写十进制数时,逗号(,)比点(.)更常用 多谢各位 Samuel您不需要在sql端执行任何操作。您想在php中格式化十进制值(假设为php4/php5):将第三个参数$dec_point设置为',' // string number_format ( float $number

我正在做一个加法和小数的小应用程序。点与小数一起使用是正常的,但是我如何用逗号作为输入写入十进制数(543,35而不是543.35),然后用点将其更改为数据库(mysql)?然后用逗号从数据库中打印出来。原因是,在芬兰,在写十进制数时,逗号(,)比点(.)更常用

多谢各位


Samuel

您不需要在sql端执行任何操作。您想在php中格式化十进制值(假设为php4/php5):将第三个参数$dec_point设置为','

// string number_format ( float $number , int $decimals , string $dec_point , string $thousands_sep )
<?php

$number = 1234.56;

// French notation
$nombre_format_francais = number_format($number, 2, ',', ' ');
// 1 234,56

$number = 1234.5678;

// english notation without thousands seperator
$english_format_number = number_format($number, 2, '.', '');
// 1234.57

?>
//字符串编号\u格式(浮点$number,整数$decimals,字符串$dec\u point,字符串$数千\u sep)
资料来源:


干杯

如前所述,最好将值保存为浮点数,然后格式化显示。作为先前建议的数字格式()的替代方法,您可以尝试使用money格式(),但如果这对您很重要,它在windows环境中不起作用。

否,不支持使用逗号作为算术运算的十进制分隔符。过滤输入并用句点替换逗号,然后根据需要格式化输出。

PHP函数就是您所需要的:

number_format(5.50, 2, ',');

…应该可以做到这一点。

如果您使用多种格式进行演示,这是一个演示问题,因此最好使用PHP进行处理。否则,您可以格式化SQL中的值。谢谢!现在我可以用逗号12,50代替12.50(芬兰键盘更容易),这样就可以用小数识别数字了吗?对。您只需要担心前端数字的格式,并让MySQL像往常一样存储它。不管你怎么显示,基本数字都是一样的。哎呀,我想我读你的问题太快了。。。您不需要货币格式,是吗?是的,不需要货币格式。我仍然在寻找的是,有没有可能用逗号作为输入来写十进制数?我不知道我的问题是否能用正确的方式表达出来?哦,这其实不是…我的错。(从另一方面来说,我总是惊讶于看到人们评论错误的答案却没有提供正确的答案。继续吧,伙计们,你们给社区带来了这么多:)
$input  = '5,50';
$output = str_replace(',', '.', $input);
var_dump($output); // string(4) "5.50"
$number = (float)$output;
var_dump($number); // float(5.5)