Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.soft-sys.math.mathematica > #2771 > unrolled thread

Re: Rounding to a certain number of decimal places

Started byDaniel Lichtblau <danl@wolfram.com>
First post2011-05-28 11:21 +0000
Last post2011-05-28 11:21 +0000
Articles 1 — 1 participant

Back to article view | Back to comp.soft-sys.math.mathematica


Contents

  Re: Rounding to a certain number of decimal places Daniel Lichtblau <danl@wolfram.com> - 2011-05-28 11:21 +0000

#2771 — Re: Rounding to a certain number of decimal places

FromDaniel Lichtblau <danl@wolfram.com>
Date2011-05-28 11:21 +0000
SubjectRe: Rounding to a certain number of decimal places
Message-ID<irqls4$ebk$1@smc.vnet.net>
On 05/27/2011 05:14 AM, Andrew DeYoung wrote:
> Hi,
>
> I would like to be able to round a number to a certain, specified
> number of decimal places (not number of digits), including zeros.
> Suppose that some function f does this, and takes two arguments, the
> number to be rounded and the number of decimal places to which to
> round:  f[number, numPlaces].  Then, for example, I would like the
> following results, if possible:
>
> f[0.8168, 3] = 0.817
> f[1.8168, 3] = 1.817
> f[10.8168, 3] = 10.817
> f[100.8168, 3] = 100.817
> f[0.99, 3] = 0.990
> f[0.9, 3] = 0.900
> f[0.00572, 3] = 0.006
>
> Is there a function f (either built-in or a custom function) that can
> do this?  Mathmatica's built-in function NumberForm does not quite do
> this because the user specifies the number of digits, not the number
> of decimal places.  Also, NumberForm does not count zeros after the
> decimal point as digits, nor does it add extra zeros as needed if they
> are redundant.
>
> Am I getting into deep water here, or is there something
> straightforward that can do what I would like?
>
> I am running Mathmatica 7.  Also, I do not need to be able to do
> further computations on the output; I will be converting the output to
> a string, anyway.
>
> Thank you very much for your time.
>
> Andrew DeYoung
> Carnegie Mellon University

To obtain numbers of the desired form, either of f or f2 will suffice. 
The key issue is to force the Accuracy (in Mathematica's usage) to be 
the desired number of digits. Some experimenting showed me I needed to 
add a hair beyond the integer specification in order to have them come 
out right.

f[n_, d_Integer] := N[Rationalize[n, 0], {Infinity, d + 10^(-2)}]

f2[n_, d_Integer] := SetAccuracy[n, d + 10^(-2)]

If all that is of interest is the formatting, can use NumberForm as below.

f3[n_, d_Integer] := NumberForm[n, {Infinity, d}]

Daniel Lichtblau
Wolfram Research

[toc] | [standalone]


Back to top | Article view | comp.soft-sys.math.mathematica


csiph-web