![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| neoks |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 425 Регистрация: 5.7.2010 Репутация: нет Всего: 1 |
Вообшем нужно правильно выводить цены, делаю продажу модулей и не знаю как подойти.
Суть в том что продавец может указать любую цену например 0.10345563 или 10.000 или 1.200.0000 Нужно как то корректировать цены, чтоб получилось 0.10345563 = 0.10 10.000 = 10.000 1.200.0000 = 1200.00 1.235736 = 1.23 1234.56 = 1234.56 В вебмани сказано: Сумма платежа, которую продавец желает получить от покупателя. Сумма должна быть больше нуля, дробная часть отделяется точкой. То есть если поставить цену 0.104483552 то он мне скажет err: 2 payment amount (0.104483552) is incorrect or not defined by merchant step:8 Нужна ваша помощь, как можно подкорректировать цены чтоб получилось так: 0.10345563 = 0.10 10.000 = 10.000 1.200.0000 = 1200.00 1.235736 = 1.23 1234.56 = 1234.56 Не знаю чем подойти циклом или заменой, может уже есть готовая функция ? Это сообщение отредактировал(а) neoks - 11.9.2011, 12:35 |
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
То есть, если в изображении числа две и больше точек - нужно их игнорировать? А что делать, если только одна точка, и та разделитель тысяч, а не разделитель копеек? Или просто декоративный элемент?
Самый разумный, имхо, способ - проверять число по маске. Если число не подходит - говорить "ошибка при вводе цены, возможно, вы имели вот это..." + пытаться его отконвертировать и предложить вариант правки пользователю. Тоесть, при неправильном вводе все равно добавляется один шаг корректировки. В этом случае очень умный вариант корректировки сочинять не нужно. -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| neoks |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 425 Регистрация: 5.7.2010 Репутация: нет Всего: 1 |
Нашол функцию http://ru.php.net/manual/ru/function.number-format.php
Вроде как подходит но слегка сомневаюсь в ней. То есть если я укажу 10.000 то она мне вернет 10.00 получается вместо 10тыс я получу 10 баксов. Или если я укажу 1000000 то она мне вернет 1000000.00 тока не знаю это и вправду один лимон получается если 2 нуля дописано с точкой Как я понял нужно к этой функции что то еше придумать чтоб правильно работало или проше вариант сделать подсказку продавцу как нужно указывать цены. Логично если ставить точку например 10000 и поставить точку 10.000 получается 10$ но с другой стороны там ведь 3 нуля а значит что это 10тыс. Пока не понимая как это реализовать. |
|||
|
||||
| Muerto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: 3 Всего: 4 |
Не пользуйся этой функцией, правильная формула того что тебе нужна будет
Это сообщение отредактировал(а) Muerto - 11.9.2011, 13:33 |
|||
|
||||
| neoks |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 425 Регистрация: 5.7.2010 Репутация: нет Всего: 1 |
Muerto
Хм, какай та она странная, вместо 10 дает 8, вместо 10000 дает 10002 вместо 10.000 дает 8 |
|||
|
||||
| Muerto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: 3 Всего: 4 |
Ну давай посчитаем
Ищите странности у себя На крайняк сюда вбить можно http://www.wolframalpha.com/ http://www.wolframalpha.com/input/?i=%28fl...%29++%2F++10^2+ Это сообщение отредактировал(а) Muerto - 11.9.2011, 14:03 |
|||
|
||||
| neoks |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 425 Регистрация: 5.7.2010 Репутация: нет Всего: 1 |
Вот сами попробуйте
Я не чего просто так не рассказываю, яж пробою и вот результат А вообще пришла мне идея, просто напросто не давать продавцу вбивать больше 1й точки и парсить функцией number_format() Она отлично работает вот только с 2мя точками плохо понимает. Думаю так и сделаю, просто не дам вбивать больше 1й точки, как сделаю отпишусь. |
|||
|
||||
| Muerto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: 3 Всего: 4 |
Я вам дал в математической форме, а не в php
в php есть pow http://php.net/manual/en/function.pow.php для степени
а floor http://php.net/manual/en/function.floor.php не меняется Это сообщение отредактировал(а) Muerto - 11.9.2011, 14:08 |
|||
|
||||
| neoks |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 425 Регистрация: 5.7.2010 Репутация: нет Всего: 1 |
floor - для округления чисел что мне не нужно
pow - так и не понял что это такое. Вообшем я сделал банально, запретил вбивать больше 1й точки Получилось так: 10.00 1.00 01.00 1 1000.00 1000 и тд. Потом подкорректирую своей функции и проверю функцией number_format(); Конечно вышло немного геморройно но что делать. |
|||
|
||||
| Muerto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1207 Регистрация: 23.9.2006 Репутация: 3 Всего: 4 |
Ну pow(x, y) Это тоже самое как x^y , это самая база школьная - степени, икс в квадрате pow(x,2)
А контралировать на стороне клиента плохо - он подменить может. |
|||
|
||||
| neoks |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 425 Регистрация: 5.7.2010 Репутация: нет Всего: 1 |
Хууу, все сделал.
Кому интересно вот скрипт.
Javascript стерает все ненужные значения, пример: 034.1339.098 переводит в 34.13 На случий если кто та отключит javascript или попытается подсунуть другие значения то функция cur_prices() заменит на тоже число что и java вернет 34.13 Пример javascript: функция срабатывает при нажатие клавы
Это сообщение отредактировал(а) neoks - 11.9.2011, 15:07 |
||||||
|
|||||||
| Absinthe |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 526 Регистрация: 4.5.2011 Репутация: 5 Всего: 11 |
|
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |