Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Avrunding av tall med masse desimaler

13 views
Skip to first unread message

Roger Valand

unread,
May 9, 2005, 8:38:55 AM5/9/05
to
Hei
Jeg skal avrunde noen tall med opptil 13 desimaler. Merkelig nok så finner
jeg ikke noen standard delphi funksjon som kan avrunde til mer fornuftig
format. Jeg trenger av og til 2 og andre ganger 3 desimaler.
Må jeg faktisk bli skitten på hendene og kode denne avrundingen eller
ligger det gjemt funksjon som kan gjøre dette greit.

I andre språk kan du f.eks gjør noe liknende:
x = round(float,i), der x er avrundet resultat og 1 er antall desimaler.

Til alt overmål så bruker Delphi feil avrundingsmetode. Mitt formål er mer
vitenskapelig og jeg trenger standard avrunding.

Har noen litt lys å kaste over denne saken?

Roger

Torjei Kvinen

unread,
May 9, 2005, 9:27:58 AM5/9/05
to
Roger Valand wrote:
> Hei
> Jeg skal avrunde noen tall med opptil 13 desimaler. Merkelig nok så finner
> jeg ikke noen standard delphi funksjon som kan avrunde til mer fornuftig
> format. Jeg trenger av og til 2 og andre ganger 3 desimaler.


FloatToStrF


--
Regards
Torjei Kvinen

Torjei Kvinen

unread,
May 9, 2005, 9:33:39 AM5/9/05
to
Roger Valand wrote:
> Hei
> Jeg skal avrunde noen tall med opptil 13 desimaler. Merkelig nok så finner
> jeg ikke noen standard delphi funksjon som kan avrunde til mer fornuftig
> format. Jeg trenger av og til 2 og andre ganger 3 desimaler.

Leste litt for fort.

Det enkleste er nok å multiplisere, avrunde og dividere.

2 desimaler:
x = round(float*100) / 100;

3 desimaler:
x = round(float*1000) / 1000;


--
Regards
Torjei Kvinen

Roger Valand

unread,
May 9, 2005, 10:05:28 AM5/9/05
to
Torjei Kvinen <torjei@hahaha_bluezone.no> wrote in
news:MEJfe.9191$ai7.2...@news2.e.nsc.no:

Ja så enkelt kan det gjøres.
Takk

Roger

Torjei Kvinen

unread,
May 9, 2005, 11:35:28 AM5/9/05
to
Roger Valand wrote:
>
>
> Ja så enkelt kan det gjøres.
> Takk
>
> Roger

Multiplisering er betydelig raskere enn dividering.

2 desimaler:
x = round(float*100) * 0.01;

3 desimaler:
x = round(float*1000) * 0.001;


--
Regards
Torjei Kvinen

Egil J.M. Jahnsen

unread,
May 12, 2005, 12:50:49 PM5/12/05
to
On 9 May 2005 14:38:55 +0200, Roger Valand <roger....@westlab.no>
wrote:

Jeg dumpet litt sent inn i denne tråden, men hvorfor ikke bruke Delphi
funksjonen RoundTo? Den gjør det du etterlyser, bare med den forskjellen
at du setter inn den 10-potensen som tallet skal avrundes fra istedenfor
for antallet desimaler:

x = RoundTo(float, exp10) der exp10 kan være enten et negativt eller
positivt tall mellom -37 og +37, og er således mye mere anvendelig enn
f.eks. x = (float, digits).

RoundTo(1234567, 3) 1234000
RoundTo(1.234, -2) 1.23
RoundTo(1.235, -2) 1.24

RoundTo anvender standard Banker's avrunding, men om du har spesielle
behov i ditt vitenskapelige arbeid så kan du styre avrundingsmetoden ved
hjelp av SetRoundMode funksjonen. Du finner allt om dette i Delphi Help.

Med hilsen Egil

0 new messages