2013-01-10 47 views
0

所以我有这个小问题。 我有一个表格,您可以输入一个数字,它可以是欧洲格式,逗号作为小数点(,)或美式小数点(。)。将数字转换为另一个

知道了,我该如何转换欧洲美式格式的数字格式?美国的格式保持不变?

我试过使用这个公式,但结果是错误的。

$american = '12.5'; 
$european = '12,5'; 

$locale = 'it_IT.utf8'; 
setlocale ('LC_NUMERIC', $locale); 
$fmt = new NumberFormatter ($locale, NumberFormatter::DECIMAL); 
$american = $ fmt->parse($american); 
$european = $ fmt->parse($europen); 

response 

$american = 125 
$european = 12.5 

问题在哪里?

php ver。 5.4.10

+0

您错过了'$ europen'中的'a',无论相关与否。 – Ross

+1

$ stringFormatted = str_replace(',','。',$ inputstring);那应该不会那么困难。那是你要的吗? – Alex

+0

不,我想在我的应用程序中实现国际化,我希望以透明的方式转换数字,然后将其插入到一个mysql表 – Michelangelo

回答

0

是不是更好用str_replace()代替?

+0

是的,但数字可以欧洲或美国格式,然后我使用NumberFormatter函数转换它,数字可以是欧盟1.234.567,89或美国1,234,567.89。 – Michelangelo

2

试试下面的代码:

$american = '12.5'; 
$european = '12,5'; 

$locale = 'en_US.utf8'; 
$fmt = new NumberFormatter ($locale, NumberFormatter::DECIMAL); 
$american = $fmt->parse($american); 

$locale = 'it_IT.utf8'; 
$fmt = new NumberFormatter ($locale, NumberFormatter::DECIMAL); 
$european = $fmt->parse($european); 

得到期望的结果?

+0

没有相同的回答 – Michelangelo

+0

给出了什么结果? –

+0

$ american = 125 $ european = 12.5 – Michelangelo

相关问题