- Symulator MaSzyna -
Hyde Park => Inne niekolejowe => Wątek zaczęty przez: wasyl w 11 Września 2007, 01:00:35
-
Witam!!!
Pracuję nad małą rozbudową skryptu i w trakcie testowania trafiłem na ciekawą rzecz.
Ile to jest: (6.2 - 6) * 10 = ?
Zapewne większość matematyków odpowie, że 2. Ale wg.Autodesk-a: 1 :).
Mam takie linijki kodu:
ulam = (6.2 - 6) * 10
str_a = ulam as string
str_b = (ulam as integer) as string
str_a zwróci tekst "2.0" a str_b już zwróci "1". Winna temu jest konwersja "as integer", która ma odcinać część ułamkową. Ta jednak robi widocznie co innego :). Ktoś wie czemu tak jest i jak tego uniknąć?
-
Zapewne wynik wychodz 1.9999999 i po obcięciu części ułamkowej zostaje 1. To jest typowe zachowanie konwersji na integer. Spróbuj poszukać funkcji typu Round() i nią przekształcić. Może też pomóc inne zapisanie wyrażenia, np. 6.2*10-60.
-
fn roundInt n = (n+0.5) as integer
Snippet ze strony http://forums.cgsociety.org/archive/index.php/t-518074.html