Tronquer un double

Résolu
cs_lvl Messages postés 17 Date d'inscription jeudi 28 juin 2007 Statut Membre Dernière intervention 7 août 2007 - 28 juin 2007 à 17:07
cs_lvl Messages postés 17 Date d'inscription jeudi 28 juin 2007 Statut Membre Dernière intervention 7 août 2007 - 28 juin 2007 à 18:09
Bonjour a tous

Je voudrais tronquer un double ex 5 chiffres après la virgule mais je ne veux pas l'arrondir.
ex .99999999999999999999 = .99999

Merci de transmettre vous connaissance
lvl<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>

6 réponses

cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
28 juin 2007 à 17:41
Salut,

Tu peux multiplier ta valeur par 100000, truncater, puis diviser par 100000.
Attention au dépassement.
3
hvb Messages postés 939 Date d'inscription vendredi 25 octobre 2002 Statut Membre Dernière intervention 27 janvier 2009 3
28 juin 2007 à 17:43
bah comme je l'ai dit en dessous, fais le traitement de troncature sur le string, puis reconverti le en double.
C'est certe pas hyper logique, mais comme ça, je vois que ça (vu que tu ne veux pas arrondir)

Private function trunc(byval a as double,byval Nbapresvirgule as Integer) as Double
   dim tmp as string
 if a.tostring.indexOf(".")>=0 then
    if a.tostring.length>(a.tostring.indexOf(".")+Nbapresvirgule) then
         tmp=a.tostring.substr(0,a.indexOf(".")+Nbapresvirgule))
         a=Ctype(tmp,Double) 'ou Cdbl(tmp)
     end if
end if
return a
End function

Hvb a.k.a Batto
http://batto.info/ ^^x
bato.ltd .at. gmail.com
3
hvb Messages postés 939 Date d'inscription vendredi 25 octobre 2002 Statut Membre Dernière intervention 27 janvier 2009 3
28 juin 2007 à 17:26
tronquer pour l'affichage? Ou pour le manipuler?
Si c'est pour l'affichage... :

Private function trunc(byval a as double) as string
   return a.tostring.substr(0,a.indexOf(".")+5))
End function

Et tu dois pouvoir faire un Ctype(res,Double) pour le récuperer en Double.

Hvb a.k.a Batto
http://batto.info/ ^^x
bato.ltd .at. gmail.com
0
hvb Messages postés 939 Date d'inscription vendredi 25 octobre 2002 Statut Membre Dernière intervention 27 janvier 2009 3
28 juin 2007 à 17:28
où res est bien entendu le resultat de la fonction que je t'ai filé (non testée, car ecrite en live ^^)

Et quand j'y pense, ma fonction ne verifie pas qu'il y a + de 5 chiffres apres le ".", il faut penser à l'ajouter.

Hvb a.k.a Batto
http://batto.info/ ^^x
bato.ltd .at. gmail.com
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_lvl Messages postés 17 Date d'inscription jeudi 28 juin 2007 Statut Membre Dernière intervention 7 août 2007
28 juin 2007 à 17:33
malheureusement j'ai besoin de m'en reservir pour d'autre calcul alors il faut qu'il reste en double.

merci
lvl
0
cs_lvl Messages postés 17 Date d'inscription jeudi 28 juin 2007 Statut Membre Dernière intervention 7 août 2007
28 juin 2007 à 18:09
Un gros merci  a vous deux pour vos explications,  je regarde ca de plus proche, je vais voir si ca fonctionne car je suis en vb 2005.

Bonne continuité
lvl
0