Robi (int)myDouble
zawsze różnią się od (int)Math.Truncate(myDouble)
?
Czy jest jakiś powód, dla którego powinienem preferować jedno nad drugim?
Odpowiedzi:
8 dla odpowiedzi № 1Math.Truncate
jest przeznaczony, gdy chcesz zachować wynik jako podwójny bez części ułamkowej. Jeśli chcesz przekonwertować go na int, po prostu użyj bezpośrednio obsady.
Edytować: W celach informacyjnych, oto odpowiednia dokumentacja z „Jawna tabela konwersji liczbowych”:
Podczas konwertowania wartości typu double lub float na typ całkowity wartość jest obcinana.
5 dla odpowiedzi nr 2
Jak wskazano przez Ignacio Vazquez-Abrams (int)myDouble
zawiedzie w taki sam sposób, jak (int)Math.Truncate(myDouble)
kiedy myDouble jest za duże.
Więc nie ma różnicy w produkcji, ale (int)myDouble
działa szybciej.