3
$\begingroup$

I have a following code:

Manipulate[
    Column@{
       InputField[Dynamic[coefA], Number, ImageSize-> 130]
       (*InputField[Dynamic[SetPrecision[coefA,3]], Number, ImageSize->130]*), 
       Slider[Dynamic[coefA], {-10., 10., .01}, ImageSize -> 130]
    },
    {{coefA, 0}, ControlType -> None}, 
    AppearanceElements -> None]

I want both Slider and InputField to be able to modify coefA variable, however I would like to have a special formatting inside InputField - to 2 decimal points (like: 1.2358->1.24). The commented line works... for the Slider. It can modify variable and it is printed correctly, but I loose ability to modify it via InputField because:

"Tag SetPrecision in SetPrecision[-1.74,3] is Protected."

Any ideas how it can be done?

$\endgroup$
7
  • 1
    $\begingroup$ Is this enough? Dynamic[SetPrecision[coefA, 3], (coefA = #) &] $\endgroup$
    – Kuba
    Dec 18, 2015 at 12:22
  • $\begingroup$ This is closely related topic: 6259 but solutions from there are not working with Number type InputField. $\endgroup$
    – Kuba
    Dec 18, 2015 at 12:26
  • $\begingroup$ I've noticed that you haven't accepted any of answers to you questions. Are they missing something. Please, take a tour. $\endgroup$
    – Kuba
    Jan 7, 2016 at 9:56
  • $\begingroup$ Oh I'm sorry i totally forgot I asked this question here! You suggested the same solution as my teacher so i totally forgot to thank you - Thanks, @Kuba. Im gonna mark this as '[SOLVED]' now (how to do so...? :D) $\endgroup$
    – michelson
    Jan 7, 2016 at 14:39
  • $\begingroup$ No worries, I just wanted to tell you about the accept mark because sometimes users are not aware of it. $\endgroup$
    – Kuba
    Jan 7, 2016 at 14:41

1 Answer 1

3
$\begingroup$

So, you can use very general answer from Michael E2 (the bottom of his answer) or this quick fix:

Column@{
    InputField[Dynamic[SetPrecision[coefA, 3], (coefA = #) &], Number], 
    Slider[Dynamic[coefA], {-10., 10., .01}]
}

Keep in mind that precision is not closely related to number of digits after decimal point.

To have 10.12 and 1.23 at once you have to use NumberForm[var, {Infinity, 2}] and approach from linked answer.

$\endgroup$

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.