Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Смотрите че написал)) велосипедище (https://javascript.ru/forum/misc/25293-smotrite-che-napisal-velosipedishhe.html)

Livaanderiamarum 01.02.2012 02:07

Смотрите че написал)) велосипедище
 
___________________________ОКРУГЛИТЬ___________________________
Number.prototype.round = function(a) {
	var b = Math.pow(10, a || 0);
	return Math.round(this * b) / b
}

alert( 11.6546546 .round() )
alert( 11.6546546 .round(2) )
alert( 11.6546546 .round(-1) )
alert( 11.6546546 .round(21) )
alert( typeof  11.6546546 .round() )

а было
alert( 11.6546546 .toFixed() )
alert( 11.6546546 .toFixed(2) )
//alert( 11.6546546 .toFixed(-1) ) eror
//alert( 11.6546546 .toFixed(21) ) eror
alert( typeof 11.6546546 .toFixed() )



___________________________РАНДОМ___________________________
Number.prototype.to = function(a, b) {
	b = Math.pow(10, b || 0)
	return Math.round( (a > this ? (a - this) * Math.random() + this : (this - a || 0) * Math.random() + a || 0) * b) / b
}

alert( 0 .to(10) ) //от нуля до 10
alert( 4 .to(5)  ) // от четырех до пяти
alert( 4 .to(3)  ) // от четырех до трех
alert( 4 .to()  ) // от четырех до нуля
alert( 4.5 .to(3)  ) // от четырех до трех, по умолчанию округление до 0 знаков после запятой
alert( 0 .to(5, 3)  ) //от нуля, до пяти, с тремя знаками после запятой

а было
alert( Math.random() ) // и все

poorking 01.02.2012 02:09

По-моему, это просто гениально

melky 01.02.2012 02:09

очень много телодвижений ...

Livaanderiamarum 01.02.2012 02:36

poorking,
Не каждый так может) а пригодится может каждому)

melky 01.02.2012 02:47

11.6546546 .round(2)
//==>
11.6546546 .toFixed(2) * 1.0

Shaci 01.02.2012 02:58

alert( 11.6546546 .toFixed(21) )


часто приходилось использовать на практике( порядки больше 20)?

alert( 11.6546546 .round(-1) )


-||-

Livaanderiamarum 01.02.2012 07:26

Цитата:

Сообщение от Shaci
часто приходилось использовать на практике( порядки больше 20)?

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


Number.prototype.round = function(a) {
	if(a < 0 || a > 19) throw new RangeError("round() digits argument must be between 0 and 20");
	var b = Math.pow(10, a || 0);
	return  Math.round(this * b) / b;
}


alert( 11.6546546 .round() )
alert( 11.6546546 .round(2) )
alert( 11.6546546 .round(-1) )
alert( 11.6546546 .round(21) )
alert( typeof  11.6546546 .round() )


Цитата:

Сообщение от melky
11.6546546 .round(2)
//==>
11.6546546 .toFixed(2) * 1.0

Вообще-то это делается так
alert(typeof 11.6546546 .toFixed(2))
alert(typeof +11.6546546 .toFixed(2))


а еще, допустим у меня число 152 и мне хочется округлить до сотен, я прост делаю 152.round(-2)

Цитата:

Сообщение от melky
очень много телодвижений ...

Где это много то)?


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