Я обнаружил, что запуск
Math.Log10(double.Epsilon)
вернет примерно -324
на машине A, но вернет -Infinity
на машине B.
Они изначально поступил так же, вернув -324
.
Обе машины запускались с одной и той же ОС (WinXP SP3) и версией .NET (3.5 SP1). Возможно, на машине B были обновления Windows, но в остальном никаких изменений не произошло.
Чем может объясняться разница в поведении?
Более подробная информация из обсуждений в комментариях:
Math.Log10 (double.Epsilon)
в простом консольном приложении на машине B печатает -324
, НЕ -Infinity
0x9001F
(читается с помощью _controlfp ()
). ОБНОВЛЕНИЕ: последняя точка (управление FPU word) больше не соответствует действительности: использование более новой версии _controlfp () выявило различные контрольные слова, что объясняет непоследовательное поведение. (Подробности см. В ответе rsbarro ниже.)