Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.11.2017, 16:50   #1
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
По умолчанию Преобразовтаь строку в число (int/float неважно)

Здравствуйте.
Есть такая задача: нужно входную строку (цену) преобразовать в число, с необходимостью получить ошибку выполнения с последующим её перехватом в try-catch.
Прямое приведение $number=(float)$str; работает с осечками на любой неправедный символ, гугл выдал мне функцию floatval, которая почему то отрезает мне нули (дал ей '1000', получил 1). Всё потому что функция пытается что то исправлять, а это не есть хорошо. В случае ошибки пользователя, и программа должна выдавать/обрабатывать ошибку, а не пытаться вносить свои лепты.
Как быть ?
P. S. Пока я пошёл конструировать очередной велосипед, видите ли, то что уже есть - работает не так как нужно в самых простых случаях, не говоря уже о чём то более серьёзном.
Подпись ? Не, не слышал ...
OmegaBerkut вне форума Ответить с цитированием
Старый 09.11.2017, 17:08   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от OmegaBerkut Посмотреть сообщение
гугл выдал мне функцию floatval, которая почему то отрезает мне нули (дал ей '1000', получил 1)
странно. у меня ничего не отрезает:
Код:
<?php
 $s = '1000';
 $d = floatval($s);
 echo var_dump($d);
?>
результат:
Цитата:
Код:
float(1000)

но в целом у меня нет достаточного опыта, чтобы ответить Вам на ваш вопрос.
я могу нагуглить варианты кода, но, по всей видимости, Вы это уже сделали сами.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 09.11.2017, 17:14   #3
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
По умолчанию

Serge_Bliznykov, нули отрезает, ибо там пробел после единицы. В общем и целом - это не правильно; пускай он бы мне выдал ошибку, нежели пропускает, а я не в состоянии это проконтролировать. Как результат - ошибку я вижу постфактум, когда например заказчик бъёт тревогу, что здесь должно быть 1500, а здесь 1.
str_replace почему то пробел не съедает.
UPD: не съедает, потому что это и не пробел вовсе. Цирк какой то. Скопировал и вставил в код, теперь работает правильно.
Подпись ? Не, не слышал ...

Последний раз редактировалось OmegaBerkut; 09.11.2017 в 17:22.
OmegaBerkut вне форума Ответить с цитированием
Старый 11.11.2017, 13:41   #4
Byurrer
Пользователь
 
Регистрация: 15.01.2011
Сообщений: 77
По умолчанию

Еще можно так:
Код:
sscanf("1500", "%d", $num);
Byurrer вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
не выводится дробное число.float, ошибка,int main felker Общие вопросы C/C++ 2 04.02.2015 12:26
Двухзначное число int записать как пару однозначных int (c++) narien Помощь студентам 2 08.01.2012 15:10
функция float average(int arrray[],int from,int to) yuliyayuliya Помощь студентам 0 25.04.2011 21:55
float to int Артэс Общие вопросы C/C++ 1 14.12.2009 01:20
float to int span4 SQL, базы данных 7 01.06.2009 10:57