Ограничения с плавающей точкой

logSM - это указатель на массив, а не массив указателей.

Поскольку logSM является указателем, мы должны разыменовать его. И поскольку он указывает на массив структурных объектов (экземпляров), мы не можем использовать оператор «стрелка».

Таким образом, использование должно быть похоже на

(*logSM)[*counter].ticks = ticks;

Более «естественное» решение - переопределить псевдоним типа timeLog, чтобы он был просто самой структурой.

Так что-то вроде

typedef struct
{
    int vonWem;
    int ticks;
} timeLog;

Тогда вы можете использовать logSM как любой другой указатель или массив:

logSM[*counter].ticks = ticks;
5
задан David Schmitt 2 January 2009 в 09:42
поделиться

3 ответа

Я думаю, что это отражается больше над Вашим пониманием типов с плавающей точкой, чем на Python. См. мою статью о числах с плавающей точкой (основанный на.NET, но все еще релевантный) по причинам позади этой "погрешности". Если необходимо сохранить точное десятичное представление, необходимо использовать десятичный модуль.

18
ответ дан 18 December 2019 в 05:56
поделиться

Это не недостаток Python, скорее это - недостаток способа, которым числа с плавающей точкой хранятся на компьютере. Независимо от языка реализации Вы найдете подобные проблемы.

Вы говорите, что хотите 'отобразиться' как плавающая точка, почему не только отображают строку? Визуально это будет идентично тому, что Вы ожидаете.

Как Jon упомянул, если Ваши потребности больше, чем просто 'отображают' число с плавающей точкой, необходимо использовать десятичный модуль для хранения точного представления.

6
ответ дан 18 December 2019 в 05:56
поделиться

Превосходные ответы, объясняющие причины. Я просто хочу добавить возможное практическое решение из стандартной библиотеки:

>>> from decimal import Decimal
>>> a = Decimal('2.3')
>>> print a
2.3

Это на самом деле (очень) F.A.Q. для Python, и можно прочитать ответ здесь.


Править: Я просто заметил, что John Skeet уже упомянул это. О, хорошо...
4
ответ дан 18 December 2019 в 05:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: