Тип Double

2 отговора 0 прегледа
#1

Тип Double

Здравейте!
Пробвайте следния пример на VB6:

Dim a As Double
Dim b As Double
Dim c As Double
a = 12345.00002
b = 12345.00001
c = a - b
Debug.Print c

При мен се получава резултат 9.99999974737875E-06 (0.00000999...) !!!
Защо не смята вярно?
Това се получава само при изваждане и то само когато резултатът в по-малък от 1.
Защо при всяко изваждане трябва да правя Round ?
Как мога да избегна това?

Отговор
в отговор на SteveS #2

Re: Тип Double

мдааа особено гадно,
камо ли пък ако после някъде проверяваш дали стойноста ти трябва да е равна на 0,000001 (или колкото се пада там)

мен ми се е случвало преди времето на осмака, но скоро не е (слава богу)

единственото решение за което се сещам в момента е да се разбива числото като текст и да си правиш операциите знак по знак както се учим в първи клас :) (който го мързи да чете като мен ей така се мъчи)
само, че пак ще имаш малко трудности с числата в експоненциален формат

Редактирано от msafinx на

Отговор
в отговор на SteveS #3

Re: Тип Double

Пробвай с това: Debug.Print Round(c, 8)

Не е нужно при всяко изваждане да ползваш Round. Прецени с каква прецизност искаш да работиш ползвай Round само при визуализация.

Ние ползваме 8 знака след десетичната запетая. Ти ако искаш ползвай 12.

cheers,
</wqw>


[линк]
Отговор