CL-USER> (let* ((n 4)
(m (expt 10 n)))
(/ (ftruncate 0.2398476566 (/ 1 m)) m))
0.2398 здесь верно
CL-USER> (let* ((n 3)
(m (expt 10 n)))
(/ (ftruncate 0.2398476566 (/ 1 m)) m))
0.239 а здесь должно быть 0.24 т.к. после 9 идёт 8. 9 должна быть увеличени на 1
CL-USER> (let* ((n 2)
(m (expt 10 n)))
(/ (ftruncate 0.2398476566 (/ 1 m)) m))
0.23 да и здесь должно быть 0.24
Если тебе надо округлять только для того, чтобы пользователю показать, то этого делать не обязательно. Ну если же для чего-то захотелось округлить, то ладно.
У меня всё хуже. По этим расчётам мне допуски в чертежах указывать потом токорю отдавать и если он чего-то не поймёт но не скажет, он мне там такого там наточит. Поэтому это важно.
И не округлять тоже не понятно чем пахнет, ведь есть значимые числа от которых необходимо отталкиваться. А тут голова кругом.
При округлении в 30 знаков даёт другой результат чем в 3 знака.
По этим расчётам мне допуски в чертежах указывать потом токорю
Даже в твоем примере выше, с округлением до соток, плюс допуск, что там токарю непонятно будет, - непонятно. Или у вас там микроны? Так с ними тоже самое.
Так ведь система в которой производится расчёт тоже имеет свой предел и сама округляет. Если в расчётах принято округлять до второго знака после запятой, то в CAD любом, при вычерчивании третьей фигуры чертёж начинает плыть, работает при округлении в 5,6 знаке после запятой.