Jaka jest różnica w ASP/VBScript między Int()
i CInt()
?ASP/VBScript - Int() vs CInt()
Odpowiedz
Funkcja Int zwraca część całkowitej określonej liczby.
Funkcja CInt przekształca wyrażenie typ całkowity.
A najlepszą odpowiedź pochodzi z MSDN
CInt różni się od funkcji Fix i Int, które obcinają, zamiast okrągłe, część ułamkową liczby. Kiedy część ułamkowa jest dokładnie 0,5, funkcja CInt zawsze zaokrągla ją do najbliższej liczby parzystej. Na przykład: 0,5 rundy na 0, i 1.5 rundy na 2.
Najważniejszą różnicą (przynajmniej IME) jest .... CInt overflows at 32,767.
Oto kolejna różnica:
Scenariusz:
wscript.echo 40.91 * 100
wscript.echo Int(40.91 * 100)
wscript.echo CInt(40.91 * 100)
wynik:
4091
4090 (????)
4091
Wszelkie myśli?
Zaokrąglanie zaokrąglone. Rzeczywista wartość "40.91" w kodzie jest bardzo bliska, ale tylko mniejsza niż teoretyczna wartość dziesiętna. CInt zaokrągla do najbliższego, Int obcina. –
Zwykłą odpowiedzią na ten problem jest ręczne wymuszenie ponownego zaokrąglenia. Ten problem jest tak stary jak FORTRAN.
Zamiast
a = int(40.91 * 100)
użytkowania
b = 40.91 * 100
a = int(b + 0.5)
Bardzo stara sztuczka, nadal użyteczny w arkuszach kalkulacyjnych Excel od czasu do czasu.
Wielkie dzięki za przypomnienie, że int to 16-znakowa liczba całkowita BIT! –