Почему 2 / -2 / 2 равно -2 в OpenSCAD? (Математический порядок операций)
Недавно я занимался более сложной математикой в OpenSCAD и столкнулся с чем-то, что нахожу странным. Возьмем простое математическое выражение: 2 / 2 / 2
. На любом языке программирования это будет равно 0,5 (1/2), и OpenSCAD соглашается. Что-то вроде этого: 2 / -2 / 2
также должно быть -0,5 по той же причине. Однако OpenSCAD считает, что это -2. Это эхо(2 / -2 / 2);
дает ЭХО: -2
. Мой калькулятор, другие языки программирования (и я сам) все говорят, что его -0,5.
Это причуда OpenSCAD, или я упускаю что-то очевидное?
@Elijah, 👍4
Обсуждение2 ответа
Лучший ответ:
Я подозреваю, что поведение, которое вы видите, является недокументированной функцией (она же ошибка) OpenSCAD. В последнем стабильном выпуске я обнаружил, что если поставить - на любом конце, результат будет -0,5, но в середине мои результаты такие же, как у вас. Однако окружение -2 круглыми скобками приводит к правильному ответу.
Похоже, что круглые скобки превращают математическую операцию в целое число со знаком. Отсюда следует, что операции без скобок выполняются справа налево:
2/2 = 1, минус 1 с минусом, 2/-1 = -2
Подано: https://github.com/openscad/openscad/issues/2894, @Joel Coehoorn
И теперь есть [исправление проблемы](https://github.com/openscad/openscad/pull/2895) слился с мастером. Ночные сборки должны правильно обрабатывать это с этого момента., @Joel Coehoorn
Я зарегистрировал эту проблему как ошибку в проекте OpenSCAD, и теперь есть исправление, объединенное в master, а также тестовый случай для предотвращения регрессии. С этого момента последние ночные сборки должны корректно справляться с этим.
- Существует ли простой способ разделения моделей в OpenSCAD?
- OpenSCAD linear_extrude из многопутевого импорта svg
- .STEP/.F3D to .Файл SCAD?
- Как указать начало вращения в openscad
- Библиотека OpenSCAD для пустого пространства/отверстий
- OpenSCAD "not valid 2-manifold" полезная информация
- Рендер OpenSCAD (F6) завершается ошибкой "ERROR: CGAL error in CGAL_Nef_polyhedron3()"
- Создание "куска пирога" в OpenSCAD?
Проверьте, что (2 / -2) дает вам, @Trish