2

I want to set constraints to my parameters, e.g., "m", but Mma gives nonsensical output. How could I avoid this phenomenon by using another but "equivalent expression"? Or, is this just in my computer (i.e. a non-reproducible problem)?

case 1. output is as expected:

ToExpression[
 ToString[2.] <> ToString[">"] <> ToString["m"] <> ">=" <> 
  ToString[1.]]
2. > m >= 1.

case 2. output is unexpected:

ToExpression[
 ToString[0.10465923419974825] <> ToString[">"] <> ToString["m"] <> 
  ">=" <> ToString[-6.0857416503171394*^-6]]
-60.8574
Mr.Wizard
  • 271,378
  • 34
  • 587
  • 1,371
Laura
  • 61
  • 2

1 Answers1

3

The documentation says:

ToString[expr] gives a string corresponding to the printed form of expr in OutputForm.

The problem is with the OutputForm string of the exponent in the number:

ToString[-6.0857416503171394*^-6]
           -6
-6.08574 10

You can specify InputForm in this conversion with the second argument of ToString:

ToExpression[
 ToString[0.10465923419974825] <> ">" <> "m" <> ">=" <> 
  ToString[-6.0857416503171394*^-6, InputForm]
]
0.104659 > m >= -6.08574*10^-6

Note that you do not need ToString around things that are explicitly Strings.

Mr.Wizard
  • 271,378
  • 34
  • 587
  • 1,371