Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: вычитание отрицательный чисел
 
 автор: Дмитрий Смаль   (14.01.2010 в 18:42)   письмо автору
 
 

открыл для себя что пхп не может вычесть отрицательное число..

точнее он его вычитает но результат дает в виде -2.84217094304E-14

уже выставлял типы переменных
$bs_o = (float) $bs_operation[bs_system];

и пробовал даже модули отнимать
$bs_balance = abs($bs_b)-abs($bs_o);

всё равно не то..

чтобы сильно не мудрить, может кто подскажет как по простому сделать

  Ответить  
 
 автор: Саня   (14.01.2010 в 19:05)   письмо автору
 
   для: Дмитрий Смаль   (14.01.2010 в 18:42)
 

У вас получается очень маленькое число, которое в РНР по-другому не представляется. Но его можно отформатировать:
<?
$bs_balance 
= -2.84217094304E-14;
printf('%.025f'$bs_balance);

  Ответить  
 
 автор: Дмитрий Смаль   (15.01.2010 в 11:45)   письмо автору
 
   для: Саня   (14.01.2010 в 19:05)
 

0 это разве маленькое число?
тут походу проблема вот в чём,
я делаю несколько таких запросов
$result = mysql_query ("SELECT SUM(`bs_store`) FROM `bs_operation` WHERE currency='$bill' AND store=3");
потом результаты таких запросов слогаю или вычитаю, очевидно что-то не нак с форматами данных..

  Ответить  
 
 автор: Trianon   (14.01.2010 в 19:32)   письмо автору
 
   для: Дмитрий Смаль   (14.01.2010 в 18:42)
 

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

  Ответить  
 
 автор: Дмитрий Смаль   (15.01.2010 в 11:39)   письмо автору
 
   для: Trianon   (14.01.2010 в 19:32)
 

а в каком формате их лучше представлять?
в БД я сделал тип данных double

  Ответить  
 
 автор: Trianon   (15.01.2010 в 12:14)   письмо автору
 
   для: Дмитрий Смаль   (15.01.2010 в 11:39)
 

double - тоже формат с плавающей точкой.
INT BIGINT DECIMAL
А вообще - вот прямой параграф мануала.
http://dev.mysql.com/doc/refman/5.0/en/choosing-types.html

  Ответить  
 
 автор: Дмитрий Смаль   (16.01.2010 в 08:23)   письмо автору
 
   для: Trianon   (15.01.2010 в 12:14)
 

перечитал мануалы, решил использовать DECIMAL
всё равно при вычитании отрицательных чисел (когда эnи числа получены из запроса SELECT SUM..) получаю -5.68434188608E-14
использовать INT и при наполнении суммы умножать на 100 а потом все результаты делить на 100 как-то не очень разумно

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования