Этот вопрос может быть как-то связан с этой темой .
Если вы введете:
print log10(1e7)
, вы получите 7.0
.
print int(log10(1e7))
вы получите 7
.
Однако, если вы наберете
print log10(1e6)
, вы получите 6.0
.
print int(log10(1e6))
вас5
.
Вероятно, это ошибки округления, связанные с log10
, и их нельзя избежать (?).
Потому что, если вы наберете
print sprintf("%.20e",log10(1e6))
,5.99999999999999911182e+00
print sprintf("%.20e",log10(1e7))
дает 7.00000000000000000000e+00
Вы можете расширить и суммировать это как график: Код:
### power problem in gnuplot
reset session
set colorsequence classic
set key left
set samples 41
set xrange[-20:20]
plot int(log10(10**x)) w lp pt 7,\
x w lp pt 7
### end of code
Результат:
Вы увидите, что на нерегулярных расстояниях существуют различия между ожидаемым и полученным результатом.
Итак, мне все еще не хватает функции, которая даетмне всегда правильный порядок величины.Может быть округление всех чисел сначала до 15 десятичных знаков?Есть еще идеи?