Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Тут собираем годные задачи (javascript) (https://javascript.ru/forum/offtopic/32201-tut-sobiraem-godnye-zadachi-javascript.html)

Maxmaxmахimus 10.10.2012 12:04

че там со второй задачей то?
я верно понял что входные числа и исходящие должны быть предоставленны в виде строк?

Maxmaxmахimus 10.10.2012 12:10

вторая задача должна работать так?

var result = calc( '12124234325234234234234234234234234234234 + 3242343424234342423424234324234234 - 41' );
result // 4453463573474675475674654654654675465465465465465464


или так?

var a = new BigNumber( '12' );
var b = new BigNumber( '324234' );
var c = new BigNumber( '41' );

var d = ( a.plus( b ).minus( c ) ).multiply( a );

Hekumok 10.10.2012 12:20

я вообще не понял 2-ую задачу >.<

Maxmaxmахimus 10.10.2012 12:23

написать функцию для возможности работы с бОльшими числами чем поддерживает javascript/

В каком месте не понятно?

________________________________________

не ну вы посмотрите как удобно это пишется на Class

ВЫ только посмотрите какая красота получается ^__^


var BigNumber = new Class( function BigNumber( BigNumber ) {

	this.__construct__ = function ( value ) {
		this.stringValue = value + '';
	};


	this.plus = function ( bigNumber ) {
		var result = parseInt( this.stringValue.toString() ) + parseInt( bigNumber.toString() );
		return new BigNumber( result )
	};


	this.minus = function ( bigNumber ) {
		var result = parseInt( this.stringValue.toString() ) - parseInt( bigNumber.toString() );
		return new BigNumber( result )
	};


	this.multiply = function ( bigNumber ) {
		var result = parseInt( this.stringValue.toString() ) * parseInt( bigNumber.toString() );
		return new BigNumber( result )
	};


	this.toString = function () {
		return this.stringValue
	};


	this.valueOf = function () {
		return this.stringValue
	};

} );


var a = new BigNumber( '12' );
var b = new BigNumber( '324234' );
var c = new BigNumber( '41' );

var d = ( a.plus( b ).minus( c ) ).multiply( a );

nerv_ 10.10.2012 12:52

Цитата:

Сообщение от Maxmaxmахimus (Сообщение 208642)
Задача № 0

Создать переменную видимую только в блоке (аналог let в ECMA6).

for ( var i = 0; i < 10; i++ ){
    var ololo = i; // сделать так чтобы ololo  был виден только в блоке с циклом

}

// но не тут
window.ololo // undefined

for( var i = 0; i < 10; i++ ) {
    (function() {
        var ololo = i; // сделать так чтобы ololo  был виден только в блоке с циклом
    }());
}

Maxmaxmахimus 10.10.2012 13:59

Так нельзя потому что eval там не корректно работать будет, если сделаем eval('var qq = 11') то вар объявится в контексте внутренней функции, а не внешней)

Nekromancer 10.10.2012 14:02

Maxmaxmахimus,
это как некорректно?

Maxmaxmахimus 10.10.2012 14:05

если сделаем eval('var qq = 11') то вар объявится в контексте внутренней функции, а не внешней)

Nekromancer 10.10.2012 14:18

Ну и без eval так же будет, если там объявить переменную.

melky 10.10.2012 14:24

Цитата:

Сообщение от Maxmaxmахimus (Сообщение 209197)
вторая задача должна работать так?

var result = calc( '12124234325234234234234234234234234234234 + 3242343424234342423424234324234234 - 41' );
result // 4453463573474675475674654654654675465465465465465464


или так?

var a = new BigNumber( '12' );
var b = new BigNumber( '324234' );
var c = new BigNumber( '41' );

var d = ( a.plus( b ).minus( c ) ).multiply( a );

как хочешь - главное, чтобы можно было производить арифметические действия с числами, которые больше Number.MAX_VALUE.

в чём проблема? а вот в чём - все числа больше максимального обращаются в бесконечность :
alert( Number.MAX_VALUE * 10 );


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