2010-03-29 2 views
47

Просто интересно в php, если бы можно было преобразовать строку в double. Я использую финансовый веб-сервис, который предоставляет цену как строку. Мне действительно нужно обработать это как двойной и было интересно, как я бы преобразовать егоПреобразование строки в двойную - возможно ли это?

благодаря

+26

** Не используйте с плавающей запятой код денежной операции. ** – kennytm

+1

что мне делать с этим? – csU

+4

Целые числа. Используйте центы или более мелкие единицы. – kennytm

ответ

86

Просто используйте floatval().

т.д .:

$var = '122.34343'; 
$float_value_of_var = floatval($var); 
echo $float_value_of_var; // 122.34343 

И в случае, если вам интересно doubleval() это просто псевдоним для floatval().

И, как говорят другие, в финансовом приложении значения поплавка являются критическими, поскольку они недостаточно точны. Например. добавление двух поплавков может привести к чему-то вроде 12.30000000001, и эта ошибка может распространяться.

+0

Отлично работает в 5.4 и отключает строковые + строковые предупреждения в IDE – Shane

2

Использование doubleval(). Но будьте очень осторожны в использовании десятичных знаков в финансовых транзакциях и тщательно проверьте, что пользовательский ввод очень.

13

Для произвольной математики точности PHP предлагает двоичный калькулятор, который поддерживает числа любого размера и точности, представленные в виде строк.

$s = '1234.13'; 
$double = bcadd($s,'0',2); 

PHP: bcadd

+0

20 лет работы с PHP и до сих пор изучают новые интересные функции! +1! –

0

Почему floatval лучший вариант для финансовых данных для сравнения? Функции bc точно верят строки в действительные числа.

Смежные вопросы