当前位置:  开发笔记 > 编程语言 > 正文

PHP字符串浮动

如何解决《PHP字符串浮动》经验,为你挑选了4个好方法。

我根本不熟悉PHP并且有一个简单的问题.

我有2个变量@pricePerUnit和@invoicedUnits.以下是将这些值设置为值的代码:

$InvoicedUnits = ((string) $InvoiceLineItem->InvoicedUnits);
$pricePerUnit = ((string) $InvoiceLineItem->PricePerUnit);

如果我输出这个,我得到正确的值.让我们说5000个发票单位和1.00的价格.

现在,我需要显示花费的总金额.当我将这两者相乘时,它不起作用(正如预期的那样,这些是字符串).

但我不知道如何在PHP中解析/转换/转换变量.

我该怎么办?



1> Sampson..:
$rootbeer = (float) $InvoicedUnits;

应该为你做.看看Type-Juggling.您还应该阅读String转换为Numbers.


嗯,发票单位现在听起来很美味.
^值得注意的是(float)从字符串中删除0,如果它是第一个数字

2> earino..:

您需要非语言环境感知floatval功能:

float floatval(mixed $ var) - 获取字符串的float值.

例:

$string = '122.34343The';
$float  = floatval($string);
echo $float; // 122.34343


提到区域意识的荣誉.我只花了1.5小时跟踪由不同语言环境导致的问题,导致`(float)`在第一台服务器上转换为","而第二台服务器转换为","

3> HADI..:

好吧,如果用户写1,00,000,那么floatvar将显示错误.所以 -

floatval(preg_replace("/[^-0-9\.]/","",$input));

这更可靠.

用法:

$input = '1,03,24,23,434,500.6798633 this';
echo floatval(preg_replace("/[^-0-9\.]/","",$input));


而不是**ereg**使用**preg**`$ string = preg_replace("/ [^ 0-9 \.\ - ] /","",$ string);`
是的,ereg,此功能已被弃用.所以需要使用preg而不是ereg :)

4> Tobias P...:

处理浮点数中的标记是一项非常重要的任务.在英语/美国符号中,您可以格式化一千加46*10-2:

1,000.46

但在德国你会改变逗号并指出:

1.000,46


这使得在多语言应用程序中猜测正确的数字变得非常困难.
我强烈建议使用Zend Framework的Zend_Measure来完成这项任务.该组件将通过用户语言将字符串解析为float.


现在(+ 3年),人们可以使用[NumberFormatter](http://php.net/NumberFormatter.parse)从PHP 5.3开始使用`intl`扩展名.
推荐阅读
k78283381
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有