Показать сообщение отдельно
Старый 06.04.2011, 09:46   #10  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,444 / 1781 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от raz Посмотреть сообщение
Если тут прописать:
X++:
b = 0.0353731871241599;
То результат: ....
Вот где вкралась неточность в ваших расчётах!
Переменная b, значение которой вы вычисляете как 100 / 2827 на самом деле инициализируется не 0.0353731871241599, а 0.3537318712415989e-1. это легко проверить
X++:
b = 100 / 2827;
info(num2str(10*b, 0, 16, 0, 0));
Дело в том что когда мы говорим о точности в 16 знаков после запятой, на самом деле имеются в виду 16 значащих цифр мантисы. Функция же num2str возвращает непосредственно первые 16 цифр после запятой, в момент преоброзования отбрасывая все невместившиеся значащие цифры и округляя 17 знак.

Интересно а есть ли в аксапте возможность преобразовать вещественное значение в строку без потери значащих разрядов (т.е в экспоненциальном формате)?

Последний раз редактировалось S.Kuskov; 06.04.2011 в 09:57.