Я пытаюсь написать быстрый код для вычисления разных порядков величины 10. Должно быть довольно просто, но результаты немного странные. При вычислении 10^-6 вещей добавляется много дополнительных десятичных знаков. Результаты выглядят как это:Дополнительные цифры добавляются к двойному
- 0,1
- 0,01
- 0,001
- 0,0001
- 0,00001
- 0,0000010000000000000002
Вот код, я использую:
private Double CalculateOrderOfMagnitude(Int32 n)
{
if (n < 0)
return CalculateOrderOfMagnitude(n + 1)/10.0;
if (n > 0)
return CalculateOrderOfMagnitude(n - 1) * 10.0;
return 1.0d;
}
http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html – EZI
Есть ли причина, вы возвращаете 'Double' вместо' Decimal' как в заголовке вопроса и теге? Кроме того, можно ли увидеть код, который на самом деле вызывает этот метод? – ryanyuyu
Извините, я обновил заголовок соответствующим образом. Что касается кода, который фактически использует метод, он довольно прост, я просто беру результат вызова этого метода и умножаю его на другой номер. –