我有一个PHP表单,捕获数据,主要是字符串,并将其提交到XML文件进行存储。 我想要其中一个输入来捕获价格(浮动),然后减去与该用户帐户相关的百分比(存储在mysql中),将这两个值存储在xml文件中。
当前代码如下所示:
$price = $_POST['product_price'];
$our_price = $price - $user['product_fee'];
这显然不起作用,因为两个值都存储为字符串,而不是浮点数。
有一个简单的解决方案,我显然在这里遗漏了一些东西。
答案 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个可选参数:
号码2
- >需要的小数位数
点(.
),它是小数点分隔符,
逗号(,
),如果需要,可以使用千位分隔符。
答案 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