| Новости | 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 нулей).