【发布时间】:2012-05-25 03:10:39
【问题描述】:
使用函数 floatval() 我尝试将带小数的字符串转换为浮点数,但它没有给我想要的结果。代码如下:
$price_calc = str_replace(',','.',$price); $reduction_calc = str_replace(',','',$reduction); $reduction_calc = '1.'.$reduction; $price_calc = floatval($price_calc); $reduction_calc = floatval($reduction_calc); $oldprice = $price_calc * $reduction_calc;这段代码来自我正在构建的一个抓取器,它获取价格 ($price) 和减少百分比 ($reduction)。根据该价格和降价,我正在尝试计算旧价格。
在能够进行计算之前,我必须将 $price 和 $reduction 都转换为浮动。这就是它出错的地方
问题是,例如当 $reduction 是 51 时,值 $reduction_calc 应该是 1.51 。由于某些奇怪的原因,在应用 floatval() 之后,变量 $reduction_calc 变成了 1。
有人知道为什么吗?提前致谢!
【问题讨论】:
-
$reduction_calc = floatval(str_replace(',', '.', str_replace('.', '', $reduction_calc)));为什么要用` ` 替换.,然后用.替换,(如果$reduction 为51 ie,则字符串中不存在)?跨度> -
这是一个错误。它应该以不同的方式更换。由于它是抓取的内容,因此当百分比中出现逗号时,我希望有某种回退。我应该只替换逗号。我现在已经改变了(上面更新了代码),但结果是一样的。
标签: php string floating-point decimal