Does (int) myDouble когда-либо отличается от (int) Math.Truncate(myDouble)?
Чем (int)myDouble
отличается от (int)Math.Truncate(myDouble)
?
Есть ли какая-то причина, по которой я должен отдать предпочтение другому?
Ответы
Ответ 1
Math.Truncate
предназначен для того, чтобы сохранить результат как двойной, без дробной части. Если вы хотите заключить его в int, просто используйте трансляцию напрямую.
Изменить. Для справки, вот соответствующая документация из Явная таблица числовых преобразований:
При преобразовании из значения double или float в интегральный тип значение усекается.
Ответ 2
Как указано Ignacio Vazquez-Abrams (int)myDouble
будет работать так же, как (int)Math.Truncate(myDouble)
, когда myDouble слишком велик.
Таким образом, нет никакой разницы в выходе, но (int)myDouble
работает быстрее.