Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Langages serveur > ASP
ASP Forum sur la programmation ASP. Avant de poster : Cours ASP, FAQ ASP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/02/2008, 09h47   #1
Membre du Club
 
Avatar de The Molo
 
Inscription : avril 2007
Messages : 219
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : avril 2007
Messages : 219
Points : 60
Points : 60
Par défaut Garder uniquement la partie entière d'un float

Salut à tous !

J'ai (sans doute) une bête question mais je n'ai pas trouver ce que je voulais...

J'aimerais simplement avoir la partie entière d'un float, exemple :

nombre = 45,7

J'aimerais trouver une fonction qui ne garde que la partie entière ...

nombre_entier = fonction(nombre)

=> nombre_entier serait alors = à 45.

MERCI !
__________________
The Molo
The Molo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2008, 10h39   #2
Expert Confirmé
 
Avatar de franculo_caoulene
 
Inscription : octobre 2003
Messages : 2 886
Détails du profil
Informations forums :
Inscription : octobre 2003
Messages : 2 886
Points : 2 559
Points : 2 559
Salut,

Pour ne pas avoir d'arrondi il faut convertir le nombre en chaîne (s'il ne l'est pas déjà) puis faire un left.
__________________
Penser à la recherche et au bouton
franculo_caoulene est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2008, 10h50   #3
Modérateur
 
Avatar de roro06
 
Inscription : avril 2007
Messages : 1 364
Détails du profil
Informations personnelles :
Âge : 42

Informations forums :
Inscription : avril 2007
Messages : 1 364
Points : 1 551
Points : 1 551
Bonjour

J'ai peut-être pas bien compris la question, mais la fonction int() ne suffisait pas ?
__________________


" La vie c'est quelque chose de très fort et de très beau.... La vie appartient a tous les vivants. It's both a dream and a feeling. C'est être ce que nous ne sommes pas sans le rester. La vie c'est mourir aussi....Et mourir c'est vraiment strong...c'est rester en vie au delà de la mort...Tous ceux qui sont morts n'ignorent pas de le savoir."
(J.C. VanDamme, humoriste et philosophe belge . A moins que ce ne soit l'inverse ...)

Chuck Norris comprend JC Van Damme.
roro06 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2008, 10h54   #4
Membre du Club
 
Avatar de The Molo
 
Inscription : avril 2007
Messages : 219
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : avril 2007
Messages : 219
Points : 60
Points : 60
Merci de ta réponse !

Le problème pour le left, c'est que le nombre entier peut être de n'importe qu'elle dizaine (10,100,1000,...)

Donc il me faudrait quelque chose pour avoir tout ce qui est avant la virgule alors ...

As tu une idée ?

Merci.
__________________
The Molo
The Molo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2008, 10h59   #5
Expert Confirmé
 
Avatar de franculo_caoulene
 
Inscription : octobre 2003
Messages : 2 886
Détails du profil
Informations forums :
Inscription : octobre 2003
Messages : 2 886
Points : 2 559
Points : 2 559
Une petite recherche dans les fonctions vbscript... et tu tombes sur instr

roro06 cint ou formatnumber arrondissent 45.8 en 46.
__________________
Penser à la recherche et au bouton
franculo_caoulene est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2008, 11h05   #6
Modérateur
 
Avatar de roro06
 
Inscription : avril 2007
Messages : 1 364
Détails du profil
Informations personnelles :
Âge : 42

Informations forums :
Inscription : avril 2007
Messages : 1 364
Points : 1 551
Points : 1 551
Bonjour

j'ai parlé de la fonction int(), qui donne la partie entière d'un nombre, et non de la fonction cint() qui convertit un String en entier, et qui, effectivement, fait peut-etre un arrondi.
__________________


" La vie c'est quelque chose de très fort et de très beau.... La vie appartient a tous les vivants. It's both a dream and a feeling. C'est être ce que nous ne sommes pas sans le rester. La vie c'est mourir aussi....Et mourir c'est vraiment strong...c'est rester en vie au delà de la mort...Tous ceux qui sont morts n'ignorent pas de le savoir."
(J.C. VanDamme, humoriste et philosophe belge . A moins que ce ne soit l'inverse ...)

Chuck Norris comprend JC Van Damme.
roro06 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2008, 11h06   #7
Membre du Club
 
Avatar de The Molo
 
Inscription : avril 2007
Messages : 219
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : avril 2007
Messages : 219
Points : 60
Points : 60
Je viens de penser à ceci :

Code :
1
2
3
4
5
6
7
nbr=45,7
 
nbr_test = nbr - 0,5
 
entier=round(nbr_test)
 
decimal = nbr - entier
J'aurai mon nombre entier et ma partie décimal ...
__________________
The Molo
The Molo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2008, 11h11   #8
Expert Confirmé
 
Avatar de franculo_caoulene
 
Inscription : octobre 2003
Messages : 2 886
Détails du profil
Informations forums :
Inscription : octobre 2003
Messages : 2 886
Points : 2 559
Points : 2 559
Citation:
Envoyé par roro06 Voir le message
Bonjour

j'ai parlé de la fonction int(), qui donne la partie entière d'un nombre, et non de la fonction cint() qui convertit un String en entier, et qui, effectivement, fait peut-etre un arrondi.
Pardon j'étais dans mon trip j'ai cru à la faute de frappe... Si The Molo n'utilise pas les nombres négatifs pourquoi pas.
__________________
Penser à la recherche et au bouton
franculo_caoulene est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2008, 11h12   #9
Membre du Club
 
Avatar de The Molo
 
Inscription : avril 2007
Messages : 219
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : avril 2007
Messages : 219
Points : 60
Points : 60
Si si justement je dois les utiliser ...

Ma méthode ci dessus serait bonne alors ?
__________________
The Molo
The Molo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2008, 11h13   #10
Modérateur
 
Avatar de roro06
 
Inscription : avril 2007
Messages : 1 364
Détails du profil
Informations personnelles :
Âge : 42

Informations forums :
Inscription : avril 2007
Messages : 1 364
Points : 1 551
Points : 1 551
... et s'il faut aussi gérer les négatifs, il vaut mieux utiliser fix()
__________________


" La vie c'est quelque chose de très fort et de très beau.... La vie appartient a tous les vivants. It's both a dream and a feeling. C'est être ce que nous ne sommes pas sans le rester. La vie c'est mourir aussi....Et mourir c'est vraiment strong...c'est rester en vie au delà de la mort...Tous ceux qui sont morts n'ignorent pas de le savoir."
(J.C. VanDamme, humoriste et philosophe belge . A moins que ce ne soit l'inverse ...)

Chuck Norris comprend JC Van Damme.
roro06 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2008, 11h36   #11
Expert Confirmé
 
Avatar de franculo_caoulene
 
Inscription : octobre 2003
Messages : 2 886
Détails du profil
Informations forums :
Inscription : octobre 2003
Messages : 2 886
Points : 2 559
Points : 2 559
Ah tiens, je ne connaissais pas fix(). Ca à l'air de coller à la demande, en effet.
__________________
Penser à la recherche et au bouton
franculo_caoulene est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2008, 14h33   #12
Membre du Club
 
Avatar de The Molo
 
Inscription : avril 2007
Messages : 219
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : avril 2007
Messages : 219
Points : 60
Points : 60
Re,

Je travaille avec la méthode que j'avais expliqué ci dessus, à savoir :


Code :
1
2
3
4
5
6
7
nbr=45,7
 
nbr_test = nbr - 0,5
 
entier=round(nbr_test)
 
decimal = nbr - entier
Je dois donc, de mon nombre de départ, séparer l'entier du décimal pour pouvoir travailler sur les deux valeurs séparement.

Mon unique problème avec cette méthode est que pour le décimal, il m'affecte pas la bonne valeur :

Dans mon exemple : 45,7

Je devrais avoir :

entier = 45
decimal=0,7

Mais j'obtiens :
entier = 45
decimal=0,700000000000001


Avez vous une idée de comment je pourrais échapper à cela ?

Merci beaucoup !
__________________
The Molo
The Molo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2008, 16h22   #13
Modérateur
 
Avatar de roro06
 
Inscription : avril 2007
Messages : 1 364
Détails du profil
Informations personnelles :
Âge : 42

Informations forums :
Inscription : avril 2007
Messages : 1 364
Points : 1 551
Points : 1 551
Si tu trouve une solution élégante à ce problème, ça m'interesse, car j'ai également le même problème actuellement, en javascript
__________________


" La vie c'est quelque chose de très fort et de très beau.... La vie appartient a tous les vivants. It's both a dream and a feeling. C'est être ce que nous ne sommes pas sans le rester. La vie c'est mourir aussi....Et mourir c'est vraiment strong...c'est rester en vie au delà de la mort...Tous ceux qui sont morts n'ignorent pas de le savoir."
(J.C. VanDamme, humoriste et philosophe belge . A moins que ce ne soit l'inverse ...)

Chuck Norris comprend JC Van Damme.
roro06 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/02/2008, 23h13   #14
Expert Confirmé Sénior

 
Avatar de Immobilis
 
Inscription : mars 2004
Messages : 5 857
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 5 857
Points : 5 973
Points : 5 973
Salut,

Citation:
Envoyé par The Molo Voir le message
Je travaille avec la méthode que j'avais expliqué ci dessus, à savoir :
As-tu au moins essayé Fix et Int?
Citation:
Both Int and Fix remove the fractional part of number and return the resulting integer value.

The difference between Int and Fix is that if number is negative, Int returns the first negative integer less than or equal to number, whereas Fix returns the first negative integer greater than or equal to number. For example, Int converts -8.4 to -9, and Fix converts -8.4 to -8.

Fix(number) is equivalent to:

Sgn(number) * Int(Abs(number))
The following examples illustrate how the Int and Fix functions return integer portions of numbers:

MyNumber = Int(99.8) ' Returns 99.
MyNumber = Fix(99.2) ' Returns 99.
MyNumber = Int(-99.8) ' Returns -100.
MyNumber = Fix(-99.8) ' Returns -99.
MyNumber = Int(-99.2) ' Returns -100.
MyNumber = Fix(-99.2) ' Returns -99.
http://www.developpez.net/forums/sho...73&postcount=4

A+
Immobilis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2008, 14h18   #15
Membre du Club
 
Avatar de The Molo
 
Inscription : avril 2007
Messages : 219
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : avril 2007
Messages : 219
Points : 60
Points : 60
Oui oui mais ce n'est pas ce que je souhaite ....

Fix() me donne bien la partie entière ...

Mais il faut aussi que je récupère la partie décimal ...

Et lorsque je fais la soustraction, j'ai plein de chiffres après la virgule...


Pour rappel :

Num = 45.9

ce que je veux après traitement :

Num_entier = 45

Num_decimal = 0.9


Merci !
__________________
The Molo
The Molo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2008, 15h04   #16
Membre du Club
 
Avatar de The Molo
 
Inscription : avril 2007
Messages : 219
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : avril 2007
Messages : 219
Points : 60
Points : 60
J'ai trouvé une solution :

nbr = 45.7

nbr = nbr - 0.5
nbr_entier = round(nbr)
nbr_decimal = nbr - nbr_entier
nbr_decimal = FormatNumber(nbr_decimal,1)

Solution :
nbr_entier = 45
nbr_decimal = 0.7

On arrondit quand même tout à la fin mais ça n'a pas d'importance pour moi car il ne me faut qu'un nombre après la virgule...
__________________
The Molo
The Molo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2008, 15h11   #17
Expert Confirmé
 
Avatar de franculo_caoulene
 
Inscription : octobre 2003
Messages : 2 886
Détails du profil
Informations forums :
Inscription : octobre 2003
Messages : 2 886
Points : 2 559
Points : 2 559
De tête (pas testé), une version numérique:
Code :
1
2
3
4
dim val, ent, dec
val = 45.9
ent = fix(val)
dec = formatnumber(val-ent, 1)
une version chaîne:
Code :
1
2
3
4
dim val, ent, dec
val = 45.9
ent = left(val, instr(val, ".")-1)
dec = right(val, len(val) - instr(val, "."))
[edit] trop atrd...
__________________
Penser à la recherche et au bouton
franculo_caoulene est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h41.


 
 
 
 
Partenaires

Hébergement Web