Тип Double
2 отговора
0 прегледа
Тип 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 ?
Как мога да избегна това?
Пробвайте следния пример на 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 ?
Как мога да избегна това?
Re: Тип Double
мдааа особено гадно,
камо ли пък ако после някъде проверяваш дали стойноста ти трябва да е равна на 0,000001 (или колкото се пада там)
мен ми се е случвало преди времето на осмака, но скоро не е (слава богу)
единственото решение за което се сещам в момента е да се разбива числото като текст и да си правиш операциите знак по знак както се учим в първи клас :) (който го мързи да чете като мен ей така се мъчи)
само, че пак ще имаш малко трудности с числата в експоненциален формат
камо ли пък ако после някъде проверяваш дали стойноста ти трябва да е равна на 0,000001 (или колкото се пада там)
мен ми се е случвало преди времето на осмака, но скоро не е (слава богу)
единственото решение за което се сещам в момента е да се разбива числото като текст и да си правиш операциите знак по знак както се учим в първи клас :) (който го мързи да чете като мен ей така се мъчи)
само, че пак ще имаш малко трудности с числата в експоненциален формат
Редактирано от msafinx на
Re: Тип Double
Пробвай с това: Debug.Print Round(c, 8)
Не е нужно при всяко изваждане да ползваш Round. Прецени с каква прецизност искаш да работиш ползвай Round само при визуализация.
Ние ползваме 8 знака след десетичната запетая. Ти ако искаш ползвай 12.
cheers,
</wqw>
[линк]
Не е нужно при всяко изваждане да ползваш Round. Прецени с каква прецизност искаш да работиш ползвай Round само при визуализация.
Ние ползваме 8 знака след десетичната запетая. Ти ако искаш ползвай 12.
cheers,
</wqw>
[линк]