Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

VBA - Fonction Int

7 réponses
Avatar
Patrick
Bonjour,

Savez-vous pourquoi 8841312.7 - Int(8841312.7) a pour résultat
0.699999999254942 et non 0.7 ?

Y a-t-il une manière de contourner le problème ?

Merci pour votre aide.

--
Patrick

7 réponses

Avatar
Francois L
Patrick a écrit :

Bonjour,

Round(8841312.7 - Int(8841312.7),1)

--
François L

Bonjour,

Savez-vous pourquoi 8841312.7 - Int(8841312.7) a pour résultat
0.699999999254942 et non 0.7 ?

Y a-t-il une manière de contourner le problème ?

Merci pour votre aide.



Avatar
garnote
Ave Patrick,

Je ne saurais te dire pourquoi mais essaie ceci :
Sub test()
Dim n As Single
n = 8841312.7 - Int(8841312.7)
MsgBox n
End Sub

Et dans une feuille de calcul :
ˆ41312,7-ENT(8841312,7)

Serge


"Patrick" a écrit dans le message de
news:
Bonjour,

Savez-vous pourquoi 8841312.7 - Int(8841312.7) a pour résultat
0.699999999254942 et non 0.7 ?

Y a-t-il une manière de contourner le problème ?

Merci pour votre aide.

--
Patrick


Avatar
Patrick
Bonjour,

Cette solution donne le bon résultat mais ne répond pas à mon besoin. Mon
but ultime est de vérifier combien un nombre a de décimales car il ne faut
pas qu'un utilisateur puisse entrer un nombre avec plus de 2 décimales. Si on
arrondie le nombre, on ne peut plus faire le contrôle. En plus dans le cas
présent le contrôle renvoit une erreur (il considère que le nombre a plus de
2 décimales) alors qu'il n'y a qu'une décimale.

Merci.

--
Patrick


"Francois L" wrote:

Patrick a écrit :

Bonjour,

Round(8841312.7 - Int(8841312.7),1)

--
François L

> Bonjour,
>
> Savez-vous pourquoi 8841312.7 - Int(8841312.7) a pour résultat
> 0.699999999254942 et non 0.7 ?
>
> Y a-t-il une manière de contourner le problème ?
>
> Merci pour votre aide.
>



Avatar
Francois L
Patrick a écrit :

Re,

La solution répondait à la question... qui n'était pas le problème !

J'aimerais bien savoir comment tu vérifies ton nombre de décimales pour
comprendre l'erreur que tu constates.

--
François L


Bonjour,

Cette solution donne le bon résultat mais ne répond pas à mon besoin. Mon
but ultime est de vérifier combien un nombre a de décimales car il ne faut
pas qu'un utilisateur puisse entrer un nombre avec plus de 2 décimales. Si on
arrondie le nombre, on ne peut plus faire le contrôle. En plus dans le cas
présent le contrôle renvoit une erreur (il considère que le nombre a plus de
2 décimales) alors qu'il n'y a qu'une décimale.

Merci.



Avatar
Philippe.R
Bonjour,
Excel effectue des conversions entre systèmes numériques lors du calcul,
d'où ce type de variation.
Si j'ai bien compris, tu souhaites contrôler un nombre de caractères saisis
et pour ce faire, le plus pratique sera peut être de passer par une saisie
au format texte, convertie après contrôle.
--
Avec plaisir
http://dj.joss.free.fr/trombine.htm
http://jacxl.free.fr/mpfe/trombino.html
Philippe.R
Pour se connecter au forum :
http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
"Patrick" a écrit dans le message de
news:
Bonjour,

Savez-vous pourquoi 8841312.7 - Int(8841312.7) a pour résultat
0.699999999254942 et non 0.7 ?

Y a-t-il une manière de contourner le problème ?

Merci pour votre aide.

--
Patrick


Avatar
Patrick
C'est finalement la solution que j'utilise.

Merci.

--
Patrick


"Philippe.R" wrote:

Bonjour,
Excel effectue des conversions entre systèmes numériques lors du calcul,
d'où ce type de variation.
Si j'ai bien compris, tu souhaites contrôler un nombre de caractères saisis
et pour ce faire, le plus pratique sera peut être de passer par une saisie
au format texte, convertie après contrôle.
--
Avec plaisir
http://dj.joss.free.fr/trombine.htm
http://jacxl.free.fr/mpfe/trombino.html
Philippe.R
Pour se connecter au forum :
http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
"Patrick" a écrit dans le message de
news:
> Bonjour,
>
> Savez-vous pourquoi 8841312.7 - Int(8841312.7) a pour résultat
> 0.699999999254942 et non 0.7 ?
>
> Y a-t-il une manière de contourner le problème ?
>
> Merci pour votre aide.
>
> --
> Patrick




Avatar
Patrick
Finalement je convertie le nombre en texte avec CStr et je vérifie où se
trouve le point. Cela fonctionne pour mon besoin.

Merci.

--
Patrick


"Francois L" wrote:

Patrick a écrit :

Re,

La solution répondait à la question... qui n'était pas le problème !

J'aimerais bien savoir comment tu vérifies ton nombre de décimales pour
comprendre l'erreur que tu constates.

--
François L


> Bonjour,
>
> Cette solution donne le bon résultat mais ne répond pas à mon besoin. Mon
> but ultime est de vérifier combien un nombre a de décimales car il ne faut
> pas qu'un utilisateur puisse entrer un nombre avec plus de 2 décimales. Si on
> arrondie le nombre, on ne peut plus faire le contrôle. En plus dans le cas
> présent le contrôle renvoit une erreur (il considère que le nombre a plus de
> 2 décimales) alors qu'il n'y a qu'une décimale.
>
> Merci.
>