1
$\begingroup$

I came across a situation where many results got many decimal places. For further calculations in my situation, I would just take the value as it shows on the screen and drop further digits. For example, I have aa = Pi/2 // N, which shows on my screen as 1.5708 while its actual value is 1.5707963267948966'. I would like to have a process that turns this value aa with many digits to its approximation bb which would be just 1.5708. I do not want to specify number of decimal places, but will take what appears on the screen (since other results may have a different number of decimal places). Also, this bb needs to be able for use towards further calculations, such that bb + 1 will give me 2.5708 exactly.

$\endgroup$
1
  • 1
    $\begingroup$ You should perhaps know that the number of digits displayed by default is determined by Options[$FrontEnd, PrintPrecision], so you could just use Round[] along with that setting. $\endgroup$ Feb 1, 2020 at 0:43

3 Answers 3

2
$\begingroup$
aa = Pi/2 // N;

bb = ToExpression[ToString[aa]]

1.5708

bb + 1

2.5708

$\endgroup$
1
  • $\begingroup$ I've long used the following which is similar to Chris's answer. $\endgroup$ Nov 9 at 6:33
1
$\begingroup$

I would like to have a process that turns this value aa with many digits to its approximation bb which would be just 1.5708

If you mean here a "manual process", then you can do a "copy as plainText" -> "Paste"

enter image description here

Compare with what happens with a normal Copy-> Paste (on Windows: Crtl-C -> Ctlr-V)

enter image description here

$\endgroup$
1
  • $\begingroup$ Sorry for the ambiguity, but I was looking for a function type of process. Thanks though. $\endgroup$
    – nanjun
    Feb 3, 2020 at 15:55
0
$\begingroup$

I've long used the following which is similar to Chris Dengen's answer above. However the addition of NumberForm, InputForm and a parameter n make this a workhorse for me.

Why would I need this in Mathematica? One example. Suppose I do a model fit to data of lower precision and get back model parameters to 15 decimal points. No way. Using parameters in my model with that much precision conveys a lack of understanding on my part of the approximate nature of the model. And perhaps confuses the model user. So I convert the list of parameters using sigFig before embedding it in the model function that I deliver to a customer. (I have never understood why this isn't built-in to Mathematica.)

sigFig::usage = "sigFig[4.912238383] returns 4.91, sigFig[4.912238383,1] returns 5";

sigFig[x_, n_:3] := 
 ToExpression[ToString[NumberForm[x, n], InputForm]];

test = sigFig[4.91223, #] & /@ Range[1, 20];
$\endgroup$

Your Answer

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

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