Edit report at http://bugs.php.net/bug.php?id=53775&edit=1

 ID:                 53775
 Comment by:         garioch2 at googlemail dot com
 Reported by:        _coola_ at arcor dot de
 Summary:            parseCurrency returns 0 instead of false
 Status:             Bogus
 Type:               Bug
 Package:            I18N and L10N related
 Operating System:   win xp
 PHP Version:        5.3SVN-2011-01-18 (SVN)
 Block user comment: N
 Private report:     N

 New Comment:

I read the bug report and your reply as well.



According to the respective manual page 



"returns the parsed value or FALSE on error" -> I would expect to get
FALSE when trying to parse 'aaa' into any available currency and locale
(And the one who wrote the bug report too) ^^



Instead it appears that the parseCurrency method just uses the locale to
transform the float number it expects in the String-parameter 

And then simply uses float_val() to convert the string to a real float
value.



Thus we get 0 (zero) for trying to parse 'aaa'.



But this makes it hard to differentiate between 

a real Zero and a Zero occuring coz of wrong input-data. And I think the
FALSE  would really help in the latter case (as in various
string-functions like strpos and so on)



thanks for your time!


Previous Comments:
------------------------------------------------------------------------
[2011-01-19 17:24:43] _coola_ at arcor dot de

1st parameter has to be a string

http://php.net/manual/en/numberformatter.parsecurrency.php

------------------------------------------------------------------------
[2011-01-18 14:01:59] [email protected]

Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at
http://www.php.net/manual/ and the instructions on how to report
a bug at http://bugs.php.net/how-to-report.php

The parseCurrency() expects the 1st parameter to be a float, when given
a string 

PHP automatically casts it to float resulting in 0.

------------------------------------------------------------------------
[2011-01-18 09:56:58] _coola_ at arcor dot de

Description:
------------
Hi! :)



I think i have found a bug in NumberFormatter.

parseCurrency() returns 0 instead of false in the following test
script.



Same Problem with parse().

Test script:
---------------
$fmt=new NumberFormatter('de_DE',NumberFormatter::CURRENCY);



$result=$fmt->parseCurrency('aaa',$currency);

//$result=$fmt->parse('aaa');



// results:

var_dump($result);   // float(0)

var_dump($currency); // string(0) "" 



// no errors!!

var_dump($fmt->getErrorCode());                  // int(0)

var_dump($fmt->getErrorMessage());               // string(12)
"U_ZERO_ERROR" 

var_dump(intl_is_failure($fmt->getErrorCode())); // bool(false)



------------------------------------------------------------------------



-- 
Edit this bug report at http://bugs.php.net/bug.php?id=53775&edit=1

Reply via email to