Skip to main content
12-Amethyst
September 2, 2015
Question

String parameter with decimal figures cut-off

  • September 2, 2015
  • 4 replies
  • 2821 views

Hello,

I have a problem, I have a parameter defined as a string and that should appear as, in this specific model, "4,0", but which indeed appears as "4," --> without the zero.

(It cuts-off the last figure).

The strange thing is that if I add a test parameter defined in the same way (in the same) it comes out correctly as "4,0". I post below a screen recording of what I mean:

Video Link : 6284

(hoping that is clear).

Anyone knows what is it due to and how to fix it?

Thanks

bye bye

    4 replies

    13-Aquamarine
    September 2, 2015

    Hi Tommaso,

    I haven't seen this problem before, but I would suggest using the "=?" toolbutton in the Relations window to investigate.

    This pops up a small dialogue box which allows you to evaluate any formula, and immediately see the answer - so for example, you can check the value of pro_mp_mass and also the result of pro_mp_mass - floor(pro_mp_mass), just by copying and pasting from the Relations editor.

    Try evaluating small parts of your relations in this way, and make sure that each small part gives the answer you were expecting.

    Good luck!

    tleati12-AmethystAuthor
    12-Amethyst
    September 2, 2015

    Hi Johnatan,

    yes, it definitely was a mistake in the logic that, with this particular number, gave back an error in a string line.

    Indeed massa_disegno appears "correctly" as "4,".

    thanks

    bye bye

    12-Amethyst
    September 2, 2015

    Are you positive this is a string-valued parameter?  Removing trailing zeroes (generally via detail setup options lead_trail_zeroes and lead_trail_zeroes_scope, generally driven by your standards) would make considerably more sense if it were a real number -valued parameter.

    tleati12-AmethystAuthor
    12-Amethyst
    September 2, 2015

    Hi Matthew,

    yes I had to make it a string parameter just for reasons linked to the approximations and, above all, to the fact that that parameter massa_disegno is a value I had built to "please" the eye in the drawing tables, that is an indication of mass rounded accordingly to the value of the mass, e.g. 5,2 kg, 204 kg, 768 g...depends on the order of size of the mass).

    bye bye

    23-Emerald III
    September 2, 2015

    Check your If/Else logic, I think the mp_pro_mass is falling through and using the default statement at the end, rather than the one you are using for the test.

    Like Jonathan said, use the relation tools '=?' to evaluate the relations and see where they go.

    23-Emerald IV
    September 2, 2015

    Exactly.  The statement you copied from is only for values less than 0.05.  4.0 is going to be handled by the last 'else' statement.

    24-Ruby III
    September 2, 2015

    Tomasso,

    I suggest you to change the structure of IF commands in relations to the following one.

    if pro_mp_mass < 0.0005
       /* mass < 0.0005
    else
       /* mass >= 0.0005
       if pro_mp_mass < 0.05
          /* mass >= 0.0005 AND mass < 0.05
       else
          /* mass >= 0.05
          if pro_mp_mass < 0.95
             /* mass >= 0.05 AND mass < 0.95
          else
             /* mass >= 0.95
             if pro_mp_mass < 1
                /* mass >= 0.95 AND mass < 1
             else
                /* mass >= 1
             endif
          endif
       endif
    endif

    Martin Hanak

    tleati12-AmethystAuthor
    12-Amethyst
    September 2, 2015

    Hi Martin,

    yes, it was missing the interval " 0,95 >   >=0,05 " (which I wrongly thought came in the "else" case) and I modified it by adding an if with it:

    if pro_mp_mass<1 & pro_mp_mass >= 0.0005

           massa_disegno=itos(1000*pro_mp_mass) + " g"

    else

           if pro_mp_mass-floor(pro_mp_mass) < 0.05

           massa_disegno=itos(floor(pro_mp_mass)) + ",0" + " kg"

           endif

           if pro_mp_mass-floor(pro_mp_mass) >= 0.95

           massa_disegno=itos(ceil(pro_mp_mass)) + ",0" + " kg"

           endif

           if pro_mp_mass-floor(pro_mp_mass) < 0.95 & pro_mp_mass-floor(pro_mp_mass) >= 0.05

           massa_disegno=itos(floor(pro_mp_mass)) + ","+ itos(10*(pro_mp_mass-floor(pro_mp_mass))) + " kg"

           endif

           if pro_mp_mass < 0.0005

           massa_disegno="< 1 g"

           endif

    endif

    and now comes out correctly...(didn't realize it conviced that was ok...better later than ever ).

    bye bye