Evlampidii
5.05.2014 - 14:16
Всем добрый день, недавно столкнулся с такой проблемой, при решении следующего примера:
<?
$a='0.011';
$b='200';
$c=$b/$a;
$с=round($с,6);
echo $c;
?>
В результате должно получиться: 0.000055
А выдает такую вот кракозябру 5.5E-5
При этом последующие расчеты правильные, все дело в выводе на экран.
Подскажите как на экран вывести нормальное число. Спасибо!
sergeiss
5.05.2014 - 14:20
Evlampidii, вот честно - ты в математике разбираешься? В ВУЗе учился? Или всё самоучкой? Спрашиваю потому, что ты постоянно спрашиваешь некие основы, вообще к ПХП не относящиеся.
5.5Е-5 - это 5.5*10^-5, т.е. 5.5, умноженное на 10 в минус 5 степени. И сравни это с "твоим" 0.000055
_____________
*
Хэлп по PHP*
Описалово по JavaScript *
Хэлп и СУБД для PostgreSQL*
Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги. *
"накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)
Evlampidii
5.05.2014 - 14:46
Цитата (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
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](http://phpforum.su/html/emoticons/smile.gif)
18181.818181818
То есть, для тебя без разницы, что 200/0.011 и получить 18181.(81), что 0.011/200 и получить 5*10^-5, я тебя верно понял?
_____________
*
Хэлп по PHP*
Описалово по JavaScript *
Хэлп и СУБД для PostgreSQL*
Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги. *
"накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)
AllesKlar
5.05.2014 - 15:02
Evlampidii$b/$a; - это вообщет 200 / 0.011
Ну а для вывода вещественных чисел в нужном тебе формате, используй вывод в нужном тебе формате
_____________
[продано копирайтерам]
Evlampidii
5.05.2014 - 15:06
Цитата (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
5.05.2014 - 15:08
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
5.05.2014 - 15:08
EvlampidiiЧего ты буянишь? Ща бабайку позовем :)
Я ж тебе уже ответил.
Код готовый нужен?
Ну так и скажи, нужен готовый код.
У нас сейчас месячник толерантности и готовых кодов :)
Пожалуйста
$c = sprintf('%2.6f',round($c,6));
_____________
[продано копирайтерам]
Игорь_Vasinsky
5.05.2014 - 15:10
Цитата |
У нас сейчас месячник толерантности и готовых кодов ![smile.gif](http://phpforum.su/html/emoticons/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
5.05.2014 - 15:13
Цитата (AllesKlar @ 5.05.2014 - 15:02) |
Evlampidii $b/$a; - это вообщет 200 / 0.011 Ну а для вывода вещественных чисел в нужном тебе формате, используй вывод в нужном тебе формате ![smile.gif](http://phpforum.su/html/emoticons/smile.gif) |
Спасибо за поправку, я просто уже глаза об монитор затер, никак не могу понять. Теперь опять 5.5E-5. Как мне уже подсказал
sergeiss 5.5, умноженное на 10 в минус 5 степени.
AllesKlar Спасибо большое за код! Буду его изучать, пока что результат 0.0000000
Evlampidii
5.05.2014 - 15:18
Цитата (AllesKlar @ 5.05.2014 - 15:08) |
Evlampidii Чего ты буянишь? Ща бабайку позовем :) Я ж тебе уже ответил. Код готовый нужен? Ну так и скажи, нужен готовый код. У нас сейчас месячник толерантности и готовых кодов :) Пожалуйста
$c = sprintf('%2.6f',round($c,6)); |
Ура! Все получилось!
![smile.gif](http://phpforum.su/html/emoticons/smile.gif)
Еще раз спасибо за код!
Evlampidii
5.05.2014 - 15:23
Цитата (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](http://phpforum.su/html/emoticons/smile.gif) 18181.818181818 То есть, для тебя без разницы, что 200/0.011 и получить 18181.(81), что 0.011/200 и получить 5*10^-5, я тебя верно понял? |
Да, я уже заметил что напутал с расположением
AllesKlar
5.05.2014 - 15:27
EvlampidiiДа пожалуйста.
ты через месяц заходи еще, когда месячник наш кончится.. а я пока твой ник в блокнотик запишу
_____________
[продано копирайтерам]
sergeiss
5.05.2014 - 15:28
Цитата (AllesKlar @ 5.05.2014 - 15:08) |
$c = sprintf('%2.6f',round($c,6)); |
"Простите за мой французский", но если используется sprintf(), то нахрена еще и round() использовать? Это "масло масляное" получается. И без round() всё будет прекрасно работать.
_____________
*
Хэлп по PHP*
Описалово по JavaScript *
Хэлп и СУБД для PostgreSQL*
Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги. *
"накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)
AllesKlar
5.05.2014 - 15:35
sergeiss
хм.. и правда. Всегда думал, что форматирование строки - это форматирование строки, но никак не приведение ее к числу, и округление, а потом уже форматирование.
_____________
[продано копирайтерам]
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.