将输入字符串表单浮动

时间:2014-10-29 21:26:49

标签: php mysql string forms floating-point

我有一个PHP表单,捕获数据,主要是字符串,并将其提交到XML文件进行存储。 我想要其中一个输入来捕获价格(浮动),然后减去与该用户帐户相关的百分比(存储在mysql中),将这两个值存储在xml文件中。

当前代码如下所示:

$price = $_POST['product_price'];
$our_price = $price - $user['product_fee'];

这显然不起作用,因为两个值都存储为字符串,而不是浮点数。

有一个简单的解决方案,我显然在这里遗漏了一些东西。

3 个答案:

答案 0 :(得分:2)

您可以使用floatval将字符串解析为浮点数。

$price = floatval($_POST['product_price']);
$our_price = $price - floatval($user['product_fee']);

警告:请阅读php浮动页面中关于精度的WARNING !!!


<强>更新

要显示浮动值的两个小数点,可以使用number_format()函数:

echo number_format(floatval($our_price), 2, '.', ''); 

但请记住,此函数会再次返回string,这是预期的,因为它主要用于演示目的。如果你想要,你可以在返回的字符串上再次使用floatval将其解析为float:

$new_float = floatval(number_format(floatval($our_price), 2, '.', ''));

注意:对于number_format,我们在float之后还传递了3个可选参数:

  1. 号码2 - &gt;需要的小数位数

  2. 点(.),它是小数点分隔符,

  3. 逗号(,),如果需要,可以使用千位分隔符。

答案 1 :(得分:0)

对于数据类型,PHP并不是非常严格。你应该能够减去两个字符串(是的,这很奇怪)。例如,这非常合适:

$var = '100.00';
$var2 = '20.00';
var_dump($var - $var2);

结果会返回float(80)。 但是如果字符串总是表示浮点值,那么你可以typecast确定它们。像:

$price = (float) $_POST['product_price'];

通过将(float)放在变量前面,可以强制$price为浮点值。你可以收取相同的费用,然后你应该能够减去它们。

答案 2 :(得分:0)

PHP以这种方式是可以忍受的 - 它会分析你的变量并强制它们的类型自动浮动:

fike@v-lubuntu:~$ php -r 'var_dump("12.31" - "0.17");'
double(12.14)

如上所述,您可以使用floatval()或类型转换($var = (float) $string)手动执行类型转换。什么是100%必须说的是你应该千万次知道你的变量将被投射到什么,因为这个表达式完全有效并将返回true

true == 'true'

要强制进行类型检查,您需要使用额外的等号运算符:

true === 'true' // false
true !== 'true' // true