Новости | FAQ | Авторы | Документация | В действии | Библиотека |
Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
MoKo 20.01.2014 06:47
Для истории предложу и такой вариант:@print[n] ^if(^math:abs($n)>1000000000000000){ $result[^n.format[%.0f]] }(^math:abs($n<0.0001)){ $result[^n.format[%.32f]] $result[^result.trim[right;0]] $result[^result.trim[right;.]] }{ $result[$n] }Но у печати в "человеческом" виде double, который на самом деле предназначен для хранения чисел в экспоненциальной форме есть и свои минусы. Скажем $n(1e37) и результат работы метода ^print($n) вам уже не очень понравится (и связан он с тем, что у double 17 значащих цифр, а не 37). Плюс большие числа, скажем 1e300 уже не поддерживаются (да и едва ли кто-то готов считать 300 нулей).