"Tam" değeri elde etmek mümkün mü? - sayfa 5

 
WePlexus :
Evet, ancak hesap makinesinde 0,09*5= 0,45 yazıyor. :)

sadece normalleştirmeniz gerekiyor:

 //double d=0.019999999999999999;
double d= NormalizeDouble ( 0.09 * 5 , 2 );
double e=( int )(d* 100 )/ 100.0 ;
Print ( "e=" ,e);
 
abolk :

Sanyok, sen bir aldatıcısın.

benim işlevim:

=0.44 verir
seninkini kontrol etmedim
 
abolk :

sadece normalleştirmeniz gerekiyor:

O da bir seçenek ))

ve numaraya ne oluyor? )))

 0.01999999999999999999
 
sanyooooook :

O da bir seçenek ))

ve numaraya ne oluyor? )))

normalizasyonun geçtiği maksimum sayı:

 double d= NormalizeDouble ( 0.01999999 , 18 );
double e=( int )(d* 100 )/ 100.0 ;
Print ( "e=" ,e);

bir tane daha 9-ku alırsanız, o zaman zaten 0.02'ye normalleşecektir.

 
abolk :

normalizasyonun geçtiği maksimum sayı:

bir tane daha 9-ku alırsanız, o zaman zaten 0.02'ye normalleşecektir.
numarayı kesmezsin
 
sanyooooook :
numarayı kesme
yani yana doğru -- NormalizeDouble() 'da hassas biçim -- 0-8
 
abolk :
yani yana doğru -- NormalizeDouble()'da hassas biçim -- 0-8
yani, zaten yan tarafta)
 
sanyooooook :
yani, zaten tarafta demektir))

zaten "sorunun özü"nü araştırmaya başladık - ve dolayısıyla "zaten"

problemin önce ayrıştırılması - sonra bileşimi

Yoksa açıklanamayan şeyler mi var?

 
abolk :

zaten "sorunun özünü" araştırmaya başladık - ve bu nedenle "zaten"

problemin önce ayrıştırılması - sonra bileşimi

Yoksa açıklanamayan şeyler mi var?

Evet )

girdiye verilen herhangi bir sayıyı gerekli sayıda karaktere kesmek için aynı işlevi (diyelim ki yazdığınızı) nasıl kullanacağınızı:

buna rağmen:

 0.01999999999999999999

buna rağmen:

 0.09 * 5
 
sanyooooook :

Evet )

aynı işlevi kullanarak, girişe verilen herhangi bir sayıyı gerekli sayıda karaktere nasıl kesebiliriz:

buna rağmen:

buna rağmen:

bu sorunu çözmek için - 0.09*5'in =0.45 olması ve =0.449999999999999999 olmaması gerekir

ve böyle bir şey olmadığında, görev başlangıçta çözülemez