LINUX.ORG.RU

Ответ на: комментарий от mv

Что-то не то

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

или где я ошибся?

saufesma
() автор топика
Ответ на: комментарий от no-such-file

На форуме люди с нетривиальными знаниями. Иногда просто удивлет, точнее за душу берёт. Приятно. А если вопрос не к месту, мои извенения.

saufesma
() автор топика

Если тебе надо округлять только для того, чтобы пользователю показать, то этого делать не обязательно. Ну если же для чего-то захотелось округлить, то ладно.

turtle_bazon ★★★★★
()
Ответ на: комментарий от turtle_bazon

У меня всё хуже. По этим расчётам мне допуски в чертежах указывать потом токорю отдавать и если он чего-то не поймёт но не скажет, он мне там такого там наточит. Поэтому это важно.

saufesma
() автор топика
Ответ на: комментарий от turtle_bazon

И это не даёт мне покоя, расчёты делаю без округлений, а конечный результат всё равно надо округлять до 1000ной подругому ни как.

saufesma
() автор топика
Ответ на: комментарий от turtle_bazon

И не округлять тоже не понятно чем пахнет, ведь есть значимые числа от которых необходимо отталкиваться. А тут голова кругом. При округлении в 30 знаков даёт другой результат чем в 3 знака.

saufesma
() автор топика
Ответ на: комментарий от saufesma

а конечный результат всё равно надо округлять

Есть же format.

$ cat round.lisp
(defvar var1 0.2398476566)
(format t "~,4F~%" var1)
$ sbcl --script round.lisp
0.2398
$

saahriktu ★★★★★
()
Ответ на: комментарий от saufesma

При округлении в 30 знаков даёт другой результат чем в 3 знака.

Ну, как бы, да. :) Поэтому обычно стараются лишний раз не округлять.

turtle_bazon ★★★★★
()
Ответ на: комментарий от saufesma

Так и форматируй конечный результат с округлением.

turtle_bazon ★★★★★
()
Ответ на: комментарий от saufesma

По этим расчётам мне допуски в чертежах указывать потом токорю

Даже в твоем примере выше, с округлением до соток, плюс допуск, что там токарю непонятно будет, - непонятно. Или у вас там микроны? Так с ними тоже самое.

anonymous
()
Ответ на: комментарий от saufesma

По этим расчётам мне допуски в чертежах указывать потом токорю отдавать и если он чего-то не поймёт но не скажет, он мне там такого там наточит.

распроси токаря про «базирование» и «допуски и посадки», твои 1000чные у токарей не котируются

anonymous
()
Ответ на: комментарий от turtle_bazon

Поэтому обычно стараются лишний раз не округлять.

Так ведь система в которой производится расчёт тоже имеет свой предел и сама округляет. Если в расчётах принято округлять до второго знака после запятой, то в CAD любом, при вычерчивании третьей фигуры чертёж начинает плыть, работает при округлении в 5,6 знаке после запятой.

saufesma
() автор топика
Ответ на: комментарий от mv

Из твоего ответа здорово пахнуло математикой. У меня аж дух спёрло.

saufesma
() автор топика
Ответ на: комментарий от anonymous

твои 1000чные у токарей не котируются

Это факт, вот поэтому и грею мозги как расчёты привязать к жизни и четырёхзвенный механизм не рассыпался бы при пуске или в рабочем режиме.

saufesma
() автор топика
Ответ на: комментарий от saufesma

при вычерчивании третьей фигуры чертёж начинает плыть

четырёхзвенный механизм не рассыпался

как это? очень интересно.

Считай в дюймах, не ошибешься.

anonymous
()
Ответ на: комментарий от anonymous

при вычерчивании третьей фигуры чертёж начинает плыть

Это мне тоже интересно, работал в QCAD, размеры в итоге уплывали.

saufesma
() автор топика
Ответ на: комментарий от saufesma

Ну, возможно, конкретно с этой предметкой не знаком, ничего сказать не могу.

turtle_bazon ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.