[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Расчеты в PHP
Evlampidii
Всем добрый день, недавно столкнулся с такой проблемой, при решении следующего примера:

<?
$a='0.011';
$b='200';
$c=$b/$a;
$с=round($с,6);
echo $c;
?>

В результате должно получиться: 0.000055

А выдает такую вот кракозябру 5.5E-5

При этом последующие расчеты правильные, все дело в выводе на экран.

Подскажите как на экран вывести нормальное число. Спасибо!
sergeiss
Evlampidii, вот честно - ты в математике разбираешься? В ВУЗе учился? Или всё самоучкой? Спрашиваю потому, что ты постоянно спрашиваешь некие основы, вообще к ПХП не относящиеся.

5.5Е-5 - это 5.5*10^-5, т.е. 5.5, умноженное на 10 в минус 5 степени. И сравни это с "твоим" 0.000055

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Evlampidii
Цитата (sergeiss @ 5.05.2014 - 14:20)
Evlampidii, вот честно - ты в математике разбираешься? В ВУЗе учился? Или всё самоучкой? Спрашиваю потому, что ты постоянно спрашиваешь некие основы, вообще к ПХП не относящиеся.

5.5Е-5 - это 5.5*10^-5, т.е. 5.5, умноженное на 10 в минус 5 степени. И сравни это с "твоим" 0.000055

Все таки прежде чем отвечать, необходимо вникнуть в суть вопроса. Я ведь не спрашивал что это означает.

Вопрос был прост, берем в руки калькулятор и выполняем следующее 0,011/200 получаем ответ 0,000055.

Когда я это прописываю в пхп получаю результат либо 18181.818181818 либо 5.5E-5. Мне не понятно, почему такой результат.
sergeiss
Evlampidii, это ты писал?

Цитата (Evlampidii @ 5.05.2014 - 14:16)
В результате должно получиться: 0.000055

А выдает такую вот кракозябру 5.5E-5


Вот я тебе и ответил на твой вопрос. Потому что ты именно не понял "что это означает". Если ты его не понял, мой ответ (хотя уж куда понятнее бы?), то так и говори. По твоим словам я могу смело предположить, что ты вообще не знаком с формой записи "число умножить на 10 в энной степени". Так получается? Иначе бы ты понял мой ответ.

Цитата (Evlampidii @ 5.05.2014 - 14:46)
в пхп получаю результат либо 18181.818181818...

Изначально этого не было написано и вообще не понятно, когда ты его получаешь, этот результат.

PS. Понял, откуда ты получаешь это число smile.gif 18181.818181818
То есть, для тебя без разницы, что 200/0.011 и получить 18181.(81), что 0.011/200 и получить 5*10^-5, я тебя верно понял? wink.gif

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
AllesKlar
Evlampidii
$b/$a; - это вообщет 200 / 0.011
Ну а для вывода вещественных чисел в нужном тебе формате, используй вывод в нужном тебе формате smile.gif

_____________
[продано копирайтерам]
Evlampidii
Цитата (sergeiss @ 5.05.2014 - 14:57)
Evlampidii, это ты писал?

Цитата (Evlampidii @ 5.05.2014 - 14:16)
В результате должно получиться: 0.000055

А выдает такую вот кракозябру 5.5E-5


Вот я тебе и ответил на твой вопрос. Если ты его не понял (хотя уж куда понятнее бы?), то так и говори. По твоим словам я могу предположить, что ты вообще не знаком с формой записи "число умножить на 10 в энной степени". Так получается? Иначе бы ты понял мой ответ.

Да, вопрос в выводе результата на экран. Я не могу найти этому объяснение, почему в пхп нельзя 0,011 разделить на 200. Поэтому и задал вопрос, разместив его в ветке для начинающих. Что бы не раздражать тех, кто хорошо знает этот язык, и кому эти вопросы покажутся глупыми.

А результат 18181.818181818 получил так:

Создал страничку 1.php с кодом:
<?
$a=0.011;
$b=200;
$c=$b/$a;
echo $c;
?>
Игорь_Vasinsky
Evlampidii
используй number_format() http://www.php.net/manual/ru/function.number-format.php

не могу найти в мануале описание этого, но php - так отображает длинные числа

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
AllesKlar
Evlampidii
Чего ты буянишь? Ща бабайку позовем :)
Я ж тебе уже ответил.
Код готовый нужен?
Ну так и скажи, нужен готовый код.
У нас сейчас месячник толерантности и готовых кодов :)
Пожалуйста
$c = sprintf('%2.6f',round($c,6));





_____________
[продано копирайтерам]
Игорь_Vasinsky
Цитата
У нас сейчас месячник толерантности и готовых кодов smile.gif

угу...

зря ты его пугаешь sprintf - она сложнее number_format()

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Evlampidii
Цитата (AllesKlar @ 5.05.2014 - 15:02)
Evlampidii
$b/$a;  - это вообщет 200 / 0.011
Ну а для вывода вещественных чисел в нужном тебе формате, используй вывод в нужном тебе формате smile.gif


Спасибо за поправку, я просто уже глаза об монитор затер, никак не могу понять. Теперь опять 5.5E-5. Как мне уже подсказал sergeiss 5.5, умноженное на 10 в минус 5 степени. smile.gif

AllesKlar Спасибо большое за код! Буду его изучать, пока что результат 0.0000000 smile.gif
Evlampidii
Цитата (AllesKlar @ 5.05.2014 - 15:08)
Evlampidii
Чего ты буянишь? Ща бабайку позовем :)
Я ж тебе уже ответил.
Код готовый нужен?
Ну так и скажи, нужен готовый код.
У нас сейчас месячник толерантности и готовых кодов :)
Пожалуйста
$c = sprintf('%2.6f',round($c,6));

Ура! Все получилось! smile.gif Еще раз спасибо за код!
Evlampidii
Цитата (sergeiss @ 5.05.2014 - 14:57)
Evlampidii, это ты писал?

Цитата (Evlampidii @ 5.05.2014 - 14:16)
В результате должно получиться: 0.000055

А выдает такую вот кракозябру 5.5E-5


Вот я тебе и ответил на твой вопрос. Потому что ты именно не понял "что это означает". Если ты его не понял, мой ответ (хотя уж куда понятнее бы?), то так и говори. По твоим словам я могу смело предположить, что ты вообще не знаком с формой записи "число умножить на 10 в энной степени". Так получается? Иначе бы ты понял мой ответ.

Цитата (Evlampidii @ 5.05.2014 - 14:46)
в пхп получаю результат либо 18181.818181818...

Изначально этого не было написано и вообще не понятно, когда ты его получаешь, этот результат.

PS. Понял, откуда ты получаешь это число smile.gif 18181.818181818
То есть, для тебя без разницы, что 200/0.011 и получить 18181.(81), что 0.011/200 и получить 5*10^-5, я тебя верно понял? wink.gif

Да, я уже заметил что напутал с расположением smile.gif
AllesKlar
Evlampidii
Да пожалуйста.
ты через месяц заходи еще, когда месячник наш кончится.. а я пока твой ник в блокнотик запишу biggrin.gif

_____________
[продано копирайтерам]
sergeiss
Цитата (AllesKlar @ 5.05.2014 - 15:08)
$c = sprintf('%2.6f',round($c,6));

"Простите за мой французский", но если используется sprintf(), то нахрена еще и round() использовать? Это "масло масляное" получается. И без round() всё будет прекрасно работать.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
AllesKlar
sergeiss
хм.. и правда. Всегда думал, что форматирование строки - это форматирование строки, но никак не приведение ее к числу, и округление, а потом уже форматирование.

_____________
[продано копирайтерам]
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.