4
$\begingroup$

Recently I have been doing more complicated math in OpenSCAD and I have run into something that I find strange. Take a simple math expression: 2 / 2 / 2. By any programming language this will equal 0.5 (1/2), and OpenSCAD agrees. Something like this: 2 / -2 / 2 should also be -0.5 for the same reason. However, OpenSCAD thinks this is -2. That is echo(2 / -2 / 2); gives ECHO: -2. My calculator, other programming languages (and myself) all say its -0.5.

Is this a quirk of OpenSCAD, or am I missing something obvious?

$\endgroup$
  • $\begingroup$ Check what (2 / -2) gets you $\endgroup$ – Trish Mar 23 '19 at 8:46
8
$\begingroup$

I suspect the behavior you are seeing is an undocumented feature (aka, bug) of OpenSCAD. I've found in the latest stable release that if the - is placed on either end, the result is -0.5, but in the middle, my results are the same as yours. Surrounding the -2 with parentheses results in a correct answer, however.

It appears that the parentheses turns a mathematical operation into a signed integer. It follows that the operations without the parentheses is right to left:

2/2 = 1, negative 1 with the minus, 2/-1 = -2

| improve this answer | |
$\endgroup$
4
$\begingroup$

I filed this issue as a bug with the OpenSCAD project, and there is now a fix merged into master, as well as a test case to prevent regression. The latest nightly builds should handle this correctly from here on out.

| improve this answer | |
$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.