NormalizeÇift paradoks - sayfa 11

 
transcendreamer :

ama genel olarak, bir kesirli sayıyı hesaplayarak, normalleştirerek, bir değişkene yazarak, sonra okuyarak ve tekrar normalleştirerek, kuyruk aldığım gerçeğinden rahatsızım.

Örneğin

basis[0]=NormalizeDouble(sum_A,2);

GlobalVariableSet("Equity-"+portfolio_id,basis[0]); 

...

current=NormalizeDouble(GlobalVariableGet("Equity-"+portfolio_id),2);

text = "Positions synchronized at " + current + " for portfolio: " + portfolio_name;

if(!automatic) MessageBox(text,""); else Print(text);

şimdi değişti

text = "Positions synchronized at " + DoubleToStr(current,2) + " for portfolio: " + portfolio_name;

if(!automatic) MessageBox(text,""); else Print(text);

ve görünüşe göre kuyruklar çıkmıyor, pah pah

Zaten yazdım, tekrar ediyorum - ikili sistemde bazı sayılar yok. Orada 0.1 yok, 0.3 yok ve diğerleri. Double val = NormalizeDouble (0.1434, 1) ne kadar yazarsanız yazın, asla 0.1 elde edemezsiniz çünkü böyle bir sayı yoktur.

Örneğin, sayılar aşağıdaki gibi temsil edilir:

0.1 = 0.1000000000000001
0,2 = 0,2000000000000000001
0,3 = 0,2999999999999999999
0,4 = 0,400000000000000002
0,6 = 0,599999999999999998

ancak
0.125 = 0.125
0.25 = 0.25
0,5 = 0,5

Bu çok endişe vericiyse, o zaman bisikletinizi fpu kullanmayacak olan kesirli sayıları (belki bazı kütüphaneler vardır, ilgilenmedim) temsil edecek şekilde yuvarlamanız veya yazmanız gerekir.

Ve bir dizgeye dönüştürme sırasında hiçbir kuyruk eklenmez, başlangıçta oradadırlar.

 
transcendreamer :

sorunumu çözdüm konuyu kapatabilirsiniz

çözüm: normalleştirmeden sonra bile çift yuvarlamayı zorlamanız gerekiyor

Yanlış karar. Yuvarlama yaparken çarpmanız, yuvarlamanız, bölmeniz gerekir. Son bölmeden sonra, sayı normalleştirilmeyecektir.
 
transcendreamer :

oldukça mümkün ... ama nihai sonuç açısından - kuyruklar var!

...

Normalizasyondan sonra kuyruk yok.
 
Integer :
Normalizasyondan sonra kuyruk yok.

Bence insanları yanıltıyorsunuz. Normalleştirmeden sonra yazı olmaması ne anlama geliyor? Kuyruklar yalnızca sayıdan aldığımız ve değeri yuvarladığımız dizide olmayabilir (ikiye değil, dizide zaten yuvarlanır). Ve NormalizeDouble()'dan sonra kuyruklar var.

 
Integer :
Yanlış karar. Yuvarlama yaparken çarpmanız, yuvarlamanız, bölmeniz gerekir. Son bölmeden sonra, sayı normalleştirilmeyecektir.

Normalleşmeden ne anlıyorsunuz? Burada stringo, algoritmanın şöyle bir şey olduğunu söyledi:

 double NormalizeDouble ( double val, int digits)
{
    val *= 10 ^ digits
    округляем к ближайшему целому
    val /= 10 ^ digits
     return val
}
 
pavlick_ :

Bence insanları yanıltıyorsunuz. Normalleştirmeden sonra yazı olmaması ne anlama geliyor? Kuyruklar yalnızca sayıdan aldığımız ve değeri yuvarladığımız dizide olmayabilir (ikiye değil, dizide zaten yuvarlanır). Ve NormalizeDouble()'dan sonra kuyruklar var.

Birini yanılttığıma inanmak istiyorsan, inan bana. Ben zaten her türlü şeyi gördüm, "ilkeli" tavrınla beni şaşırtma.
 
pavlick_ :

Normalleşmeden ne anlıyorsunuz? Burada stringo, algoritmanın şöyle bir şey olduğunu söyledi:

Normalleşmeden kastınız çok daha ilginç olacak.
 
Integer :
Sana özel bir soru veriyorum ve sen su döküyorsun. Bakış açınızı açıklamak ve tartışmak ne kadar normal olurdu.
 
pavlick_ :
Sana özel bir soru veriyorum ve sen su döküyorsun. Bakış açınızı açıklamak ve tartışmak ne kadar normal olurdu.
Ders kitaplarını ve belgeleri yüksek sesle okuyun ya da ne? Ya da "hakkında" kelimesiyle ilgili bir sözlüğü yüksek sesle okudunuz mu?
 
Integer :
Ders kitaplarını ve belgeleri yüksek sesle okuyun ya da ne? Ya da "hakkında" kelimesi hakkında yüksek sesle bir sözlük okudunuz mu?
Her şey açık, bize hiçbir şey söylemiyor. Ve sözlerden sorumlu değilseniz, konuşmalara karışmamak daha iyidir.