str_replace错误的小数

时间:2013-02-22 10:56:40

标签: php

这是我在Stackoverflow的第一个问题所以请耐心等待我:)

过去几个小时我一直试图做的是替换上传和下载数据库中的符号。

How it should be:
Input: 100.000,25
Stored in database: 100000.25
Output: 100.200,25

这里的原因是我需要逗号作为小数分隔符,并且点为千位分隔符。我还需要能够使用存储在数据库中的数字来添加/乘以更多。

到目前为止,我所尝试的最好的是什么:

// Value from form input:
$value = 100.200,25;

// Removing all but numbers and comma


$remove_symbols = array("+"," ",".","-","'","\"","&","!","?",":",";","#","~","=","/","$","£","^","(",")","_","<",">");
$db_value = str_replace($remove_symbols, '', $value);



      // $db_value  insert into db

        // Pulling out the data
        $db_pulled = number_format($row['liter'],2,',','.');  
        echo $db_pulled;

   :( returns: 100.200,00 (should return 100.200,25) 

2 个答案:

答案 0 :(得分:0)

您的问题有点令人困惑,而且您没有很好地标记它们。例如, php 标记会更合适和充分。 (我现在为你修改了它)

行。您遇到的问题是因为您需要用点替换逗号,因为这是浮点值的表示方式。在您的示例中,当您将其插入数据库时​​,它可能会被截断。

这是你可以做的:

<?php
        $numString = "100.200,25";
        $numString = str_replace(array('.', ','), array('','.'), $numString);
        $num = floatval($numString);
        echo $num;
?>

答案 1 :(得分:0)

看到您的代码返回:100.200,00(应返回100.200,25)

您的数据库表字段似乎是Int格式而不是十进制格式。

有关数字字段类型的详细信息,请访问http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html