0
$\begingroup$

I'm using the NumberForm command inside a Manipulate environment, and in some special cases Mathematica gives a pesky and mostly useless warning message :

NumberForm::sigz: In addition to the number of digits requested, one or more zeros will appear as placeholders.

Is there a way to tell mathematica to not give any of these useless warnings ?

I'm using NumberForm just to round some output numbers, with a fixed number of digits, like this : NumberForm[x, {4, 3}].

Also, is there a way to round the labeled numbers which are shown next to a Manipulate slider ?

Update : Here's a MWE which replicates my problem :

Afunction[r_, x_, y_] := -x/r + (y^2 - 1)/(2 r^2)

Acurve[x_, y_] := Plot[{Afunction[r, x, y], (x^2 - 1)/2}, {r, 0, 10}, PlotRange -> {{0, 10}, {-1.5, 1.5}}]

someInfo[x_, y_] := If[(0 < x < 1 && y > 1), Text[Style[StringJoin["Just a test :\n\n", "r = ", ToString[NumberForm[x/(1 - x^2), {5, 4}]], " km"]], {5, -1.25}], {}]

Manipulate[Show[Acurve[x, y],
PlotRange -> {{0, 10}, {-1.5, 1.5}},
AspectRatio -> 1,
Frame -> True,
Epilog -> someInfo[x, y]],

Row[{
    Control[{{x, 0.8}, -1, 2, 0.001, Appearance -> {"Labeled"}}],
    Spacer[124],
    Control[{{y, 1.5}, 0, 15, Appearance -> {"Labeled"}}]
}]]

The code compiles fine and works as excepted. However, open the first slider to enter a number by hand for "x", and enter something like x = 0.9999999. Then you should get a warning message.

What is the problem with my code ?

$\endgroup$
12
  • 1
    $\begingroup$ you may use Quiet to prevent message but what is your Manipulate code? I cannot reproduce the problem. $\endgroup$
    – garej
    Commented Feb 6, 2016 at 14:30
  • $\begingroup$ the answer to the second part of the question is here $\endgroup$
    – garej
    Commented Feb 6, 2016 at 14:33
  • $\begingroup$ Thanks garej. My manipulatye code is pretty complex, and would be hard to reduce to a MWE. Do the Quiet command applies to ALL error messages as well ? And where should I put that Quiet command in the code ? Anywhere ? $\endgroup$
    – Cham
    Commented Feb 6, 2016 at 14:44
  • $\begingroup$ no, it, like any function, applies to the expression, wrapped in it. If it is NumberForm poses problem than Quiet@NumberForm[...]. Or whatever. You may prevent all messages by Quiet@Manipulate[...]. $\endgroup$
    – garej
    Commented Feb 6, 2016 at 14:49
  • 1
    $\begingroup$ make Off[NumberForm::sigz]. Off is another option to turn of warnings. See here. $\endgroup$
    – garej
    Commented Feb 6, 2016 at 15:32

1 Answer 1

1
$\begingroup$

To address the issue use some Off[NumberForm::sigz] in Manipulate[...]. It is also better to use simple Epilog with Text[Row[...] (code below):

enter image description here

Some code picture: enter image description here

$\endgroup$
7
  • $\begingroup$ Yes, the number is badly shown at bottom of the graphics. 5.0000 X 10^7 should be aligned with the = sign, and the 7 exponent should be properly placed. I get the same with my version. $\endgroup$
    – Cham
    Commented Feb 6, 2016 at 16:14
  • $\begingroup$ @Cham, the problem in using ToString. Play around with this code: someInfo[x_, y_] := If[(0 < x < 1 && y > 1), Text[Row[{"Just a test :\n\n", "r = ", NumberForm[x 5.00000*10^7, {5, 4}], " km"}], {5, -1.25}], {}] $\endgroup$
    – garej
    Commented Feb 6, 2016 at 16:59
  • $\begingroup$ Using the combination Manipulate[Off[NumberForm::sigz];... and NumberForm[x/(1 - x^2), {5, 4},ExponentFunction->(Null&)]] appears to solve all issues. $\endgroup$
    – Cham
    Commented Feb 6, 2016 at 17:01
  • $\begingroup$ garej, the problem with your suggestion (to use Row[{"... ) is that I need to put some parts like Subscript[[ScriptCapitalJ], c], so I need to use the StringJoin and ToString commands. Unless there's another way that I don't know. $\endgroup$
    – Cham
    Commented Feb 6, 2016 at 17:07
  • 1
    $\begingroup$ I found it ! For Row, you add BaseStyle -> {FontSize -> 12, FontFamily -> "Helvetica"} for example, as an option. It works great, and the code is less messy that using all the StringJoin. I think I'm having it right now, finally ! Geez, Mathematica isn't obvious to use... $\endgroup$
    – Cham
    Commented Feb 6, 2016 at 18:09

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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