Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Большое число в строке без "e" (https://javascript.ru/forum/misc/25312-bolshoe-chislo-v-stroke-bez-e.html)

graduate 01.02.2012 14:31

Большое число в строке без "e"
 
В JS есть средства конвертировать большое десятичное число в строку не используя экспоненциальную форму? Потому что "e" используется по умолчанию.
Для оснований отличных от 10 - все ОК.

var n = Math.pow(20,20);
console.log( n.toString() ); // 1.048576e+26
console.log( n.toString(10) ); // 1.048576e+26
console.log( n.toString(9) ); // 71720501565254210065262366864

poorking 01.02.2012 15:21

Можно попробовать что то сделать самому
Number.prototype.toView = function () {
	return this.toString().replace(/^(\d+)\.(\d+)e\+(\d+)$/, function ($0, $1, $2, $3) {
		var before = $2.substr(0, +$3), after = $2.substr(before.length);
		return $1 + before + ( after ? "." + after : new Array( +$3 - before.length + 1).join("0") );
	});
}
			
alert( ( 1.123456 * Math.pow(10, 4) ).toView());
alert( ( 1.123456 * Math.pow(10, 40) ).toView());

monolithed 01.02.2012 15:46

poorking,
этакая жадная аппроксимация :D

poorking 01.02.2012 15:55

monolithed,
:) ну да, смотря для каких целей, хотя что-то мне подсказывает, что для целей, где нужно показывать прям все разряды таких больших чисел, это 100% не подойдет )))


Часовой пояс GMT +3, время: 04:39.