Arrondir à la n-ième décimale?
François2-Mar-2011/13:19:47+1:00
Bonjour,

Une question toute bête, mais comment puis-je arrondir un nombre à la n-ième décimale?

Ex: 1.26558 --> 1.266 ?

François
François2-Mar-2011/13:27:21+1:00
Je me répond à moi-même

n-round: func [
	value [number!]
	n [integer!]
	/local power-10
] [
	value: round multiply value power-10: power 10 n
	divide value power-10
]
Philippe2-Mar-2011/14:01:28+1:00
Salut,

Deux variantes :

arrondi: func [ 
renvoit l'arrondi en fonction du nbre de decimales
[catch]
val [number!]	"valeur a arrondir"
/dec dec_num [integer!]	"nbre de decimales"
][
throw-on-error [
dec_num: either none? dec_num [1] [10 ** dec_num]
val: dec_num * val
val: val + either positive? val [0.5][-0.5]
val: val - (val // 1)
val / dec_num
]
] 

; autre forme de n-round
n-round: func [	
	value [number!]	
	/n num-dec [integer!]
	/local power-10
	] [
	value: round multiply value power-10: either n [power 10 num-dec][1]
	divide value power-10
]


Il y a peut-être un moyen de mettre le nombre de decimales dans le path de la fonction : n-round/2 1.26558 .



===Philippe
coccinelle2-Mar-2011/16:48:54+1:00
Et pourquoi ne pas un tuliser bêtement la fonction round ???...
>> help round
USAGE:
    ROUND n /even /down /half-down /floor /ceiling /half-ceiling /to scale

DESCRIPTION:
     Returns the nearest integer. Halves round up (away from zero) by default.
     ROUND is a function value.

ARGUMENTS:
     n -- The value to round (Type: number money time)

REFINEMENTS:
     /even -- Halves round toward even results
     /down -- Round toward zero, ignoring discarded digits. (truncate)
     /half-down -- Halves round toward zero
     /floor -- Round in negative direction
     /ceiling -- Round in positive direction
     /half-ceiling -- Halves round in positive direction
     /to -- Return the nearest multiple of the scale parameter
         scale -- Must be a non-zero value (Type: number money time)

(SPECIAL ATTRIBUTES)
     catch


>> round/to 1.26558 0.001
== 1.266
François2-Mar-2011/16:56:19+1:00
Hooo.... J'avais pas capté la signification du raffinement /to

Merci Marco

Login required to Post.


Powered by RebelBB and REBOL 2.7.8.4.2