Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Посчитать комиссию WebMoney (0.8 %) 
:(
    Опции темы
Black
  Дата 29.7.2005, 21:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Web-Development
**


Профиль
Группа: Участник
Сообщений: 980
Регистрация: 15.8.2004

Репутация: 4
Всего: 45



Необходимо считать на JavaScript комиссию WebMoney перевода между кошельками.

Процент коммисии состовляет 0.8% от суммы перевода, но не менее 0.01 цент за перевод.

Сделал так:

Код

var kom = parseInt((eval(document.getElementById('summa'+id).value) / 100 * 0.8) * 100)/100;
if(kom==0) { kom=0.01; }  


Но считает не правильно некоторые суммы, например 77.77 WMZ у меня считает как 0.62, а у WebMoney как 0.63

Не пойму как же они считают?


--------------------
Могу все, но ничего не умею :-)
PM WWW   Вверх
Black
Дата 29.7.2005, 22:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Web-Development
**


Профиль
Группа: Участник
Сообщений: 980
Регистрация: 15.8.2004

Репутация: 4
Всего: 45



Код

var kom = eval(document.getElementById('summa'+id).value) / 100 * 0.8;

  if(/^[0-9]{1,}.[0-9]{3,}$/.test(kom))
  {
  kom = parseInt(kom*100)/100;
  kom += 0.01;
  }
  else { kom = parseInt(kom * 100) / 100; }


Почему то хоть это не работает?

kom += 0.01;
вот на этой строчке ошибка, JavaScript не может прибавить 0.01


Добавлено @ 22:08
странновсе это числа больше 8 нормально прибавляются по 0.01 а меньше выдают подобные значения

0.06999999999999999

Что за это значит?


--------------------
Могу все, но ничего не умею :-)
PM WWW   Вверх
Sardar
Дата 29.7.2005, 23:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Во первых ты когда нибудь задумывался зачем нужна функция eval? smile

Второе, ты когда нибудь думал о том как дробные числа храняться в памяти компьютера? Знаем о числах с плавающей запятой(мантисса, экспонента) ?

В третьих почему так? smile
Код
var a=0.1;
var b=0.7;
var c=a+b;
alert(c); //должен выдать 0.8, а даёт 0.799999999 =)


О регах говорить не буду, мы уже условились что ты их используешь везде где не надо smile

Если наступило просветление о настоящих машинных числах, то вспомним что фикситься бага простым округлением. Кстати деньги считают не в нативных числах, а используют специальные библиотеки с высокой точностью.

Теперь глянь на этот код:
Код
<input type="text" id="summa"><button onclick="count()">Test</button>
<script type="text/javascript">
<!--
function count() {
  var kom = (document.getElementById('summa').value * 100 * 0.8);
  kom=(kom<100)? kom=0.01: (kom/10000).toFixed(2); //две цыфры после запятой
  alert(kom);
}
 
//-->
</script>


Подумай smile


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Black
Дата 29.7.2005, 23:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Web-Development
**


Профиль
Группа: Участник
Сообщений: 980
Регистрация: 15.8.2004

Репутация: 4
Всего: 45



Sardar
я то подумал..

твой код тоже не работает как надо, если бы все было так просто smile

Эти чуваки из вебмани считают как-то по-особо хитрому, например, число

77.77 комиссия отWebMoney 0.63, твой код (впрочем как и мой) дает 0.62

Я так понял они до того любят деньги что себе их добавляют не используя правила округления.. например:

77.77 / 100 * 0.8 = 0.62216

ВебМанщики берут это число отрезают до дхух символов после точки... затем они еще как-то смотря, что если третья цифра не ноль они добавляют еще один цент :-)

Вот такие они хитрые. Как бы это на JavaScript реализовать.
Добавлено @ 23:25
Код

kom = Math.ceil(document.getElementById('summa'+id).value*1.008*100-0.000001)/100;
alert(kom);



Только этот код говорит сумму с комиссией, а мне надо отдельно комиссию узнать

Добавлено @ 23:30
Вот я тупой smile

Вот же правильный код:

Код

kom = Math.ceil(document.getElementById('summa'+id).value*0.008*100-0.000001)/100;


Только как можно было до такого додуматься я так и не пойму smile

Это сообщение отредактировал(а) PHP-DIRECTOR - 29.7.2005, 23:22


--------------------
Могу все, но ничего не умею :-)
PM WWW   Вверх
Иль
Дата 30.7.2005, 10:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 544
Регистрация: 3.3.2005
Где: Москва

Репутация: 2
Всего: 14



Да все по чесному, они округляют по правилам округления "Все в свою сторону". Я тоже так делаю smile
Простите за офтоп


--------------------
Ты виндусятник?... А я да. smile
PM MAIL ICQ Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0438 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.