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

Problème de variable ???

3 réponses
Avatar
LE TROLL
Bonjour,

Je ne comprends pas d'où ça vient:

J'ai une variable "pas" As Double
je fais
pas = 1000 / list1.listcount-1
list1.listcount = 1590 dans mon test
Donc je devrais trouver


1000 / 1590 = 0,62893082 (vérif Excel)

Or je trouve "-0,371464487743558"

???

Certes si on fait le complément on retrouve:
1 -0,371464487743558 = 0,62893082

D'ou (0,3... * -1) + 0,6... = 1

La solution bâtarde serait de faire:
((-0,371464487743558 * 2) * -1) = 0,6...

Mais bon, normalement ça ne devrait pas donner ça...

Ensuite je passe ça en Cint pour alimenter ma ProgressBar, toutefois c'est
pas terrible de lui filer des négatifs...

Et la liste est bien inférieure à sa capacité, je teste si >32000 stop
le chargement, donc ce n'est pas le listcount qui peut produire des
aberrations...

Je ne comprends pas pourquoi je me retrouve avec un négatif en divisant
un positif par un autre positif ???

Voici le code:

Dim pas As Double, totalPas As Double, avance As Integer
............
pas = 1000 / List1.ListCount - 1
totalPas = 0
.........
for i...
.........
totalPas = totalPas + pas
avance = CInt(totalPas)
ProgressBar1.Value = avance
next i



Si vous avez une idée ???


Merci beaucoup, au revoir et à bientôt :o)
------
Romans, logiciels, email, site personnel
http://irolog.free.fr/joe.htm
------------------------------------------------------------------------------------

3 réponses

Avatar
LE TROLL
J'ai trouvé, c'est à caus de:

x = 1000 / y - 1

Il faut écrire:

x = 1000 / (y - 1)

Mais pourquoi, quelqu'un peut-il m'expliquer ???


--
Merci beaucoup, au revoir et à bientôt :o)
------
Romans, logiciels, email, site personnel
http://irolog.free.fr/joe.htm
------------------------------------------------------------------------------------
"LE TROLL" <le a écrit dans le message de news:

Bonjour,

Je ne comprends pas d'où ça vient:

J'ai une variable "pas" As Double
je fais
pas = 1000 / list1.listcount-1
list1.listcount = 1590 dans mon test
Donc je devrais trouver


1000 / 1590 = 0,62893082 (vérif Excel)

Or je trouve "-0,371464487743558"

???

Certes si on fait le complément on retrouve:
1 -0,371464487743558 = 0,62893082

D'ou (0,3... * -1) + 0,6... = 1

La solution bâtarde serait de faire:
((-0,371464487743558 * 2) * -1) = 0,6...

Mais bon, normalement ça ne devrait pas donner ça...

Ensuite je passe ça en Cint pour alimenter ma ProgressBar, toutefois c'est
pas terrible de lui filer des négatifs...

Et la liste est bien inférieure à sa capacité, je teste si >32000 stop
le chargement, donc ce n'est pas le listcount qui peut produire des
aberrations...

Je ne comprends pas pourquoi je me retrouve avec un négatif en divisant
un positif par un autre positif ???

Voici le code:

Dim pas As Double, totalPas As Double, avance As Integer
............
pas = 1000 / List1.ListCount - 1
totalPas = 0
.........
for i...
.........
totalPas = totalPas + pas
avance = CInt(totalPas)
ProgressBar1.Value = avance
next i



Si vous avez une idée ???


Merci beaucoup, au revoir et à bientôt :o)
------
Romans, logiciels, email, site personnel
http://irolog.free.fr/joe.htm
------------------------------------------------------------------------------------




Avatar
Jacques
Bonjour,

Un même calcul ne peut aboutir à deux résultats différents : il est donc
nécessaire d'établir une convention sur l'ordre dans lequel effectuer les
calculs.


Par ordre décroissant de priorité seront effectués dans l'ordre:

a.. les puissances (y compris les racines carrées);
b.. puis les multiplications et les divisions;
c.. enfin les additions et les soustractions.

1000/5-1 = 199
1000 /(5-1) = 250

Jacques(BE)




"LE TROLL" <le a écrit dans le message de news:

J'ai trouvé, c'est à caus de:

x = 1000 / y - 1

Il faut écrire:

x = 1000 / (y - 1)

Mais pourquoi, quelqu'un peut-il m'expliquer ???


--
Merci beaucoup, au revoir et à bientôt :o)
------
Romans, logiciels, email, site personnel
http://irolog.free.fr/joe.htm
--------------------------------------------------------------------------


----------
"LE TROLL" <le a écrit dans le message de news:

> Bonjour,
>
> Je ne comprends pas d'où ça vient:
>
> J'ai une variable "pas" As Double
> je fais
> pas = 1000 / list1.listcount-1
> list1.listcount = 1590 dans mon test
> Donc je devrais trouver
>
>
> 1000 / 1590 = 0,62893082 (vérif Excel)
>
> Or je trouve "-0,371464487743558"
>
> ???
>
> Certes si on fait le complément on retrouve:
> 1 -0,371464487743558 = 0,62893082
>
> D'ou (0,3... * -1) + 0,6... = 1
>
> La solution bâtarde serait de faire:
> ((-0,371464487743558 * 2) * -1) = 0,6...
>
> Mais bon, normalement ça ne devrait pas donner ça...
>
> Ensuite je passe ça en Cint pour alimenter ma ProgressBar, toutefois


c'est
> pas terrible de lui filer des négatifs...
>
> Et la liste est bien inférieure à sa capacité, je teste si >32000


stop
> le chargement, donc ce n'est pas le listcount qui peut produire des
> aberrations...
>
> Je ne comprends pas pourquoi je me retrouve avec un négatif en


divisant
> un positif par un autre positif ???
>
> Voici le code:
>
> Dim pas As Double, totalPas As Double, avance As Integer
> ............
> pas = 1000 / List1.ListCount - 1
> totalPas = 0
> .........
> for i...
> .........
> totalPas = totalPas + pas
> avance = CInt(totalPas)
> ProgressBar1.Value = avance
> next i
>
>
>
> Si vous avez une idée ???
>
>
> Merci beaucoup, au revoir et à bientôt :o)
> ------
> Romans, logiciels, email, site personnel
> http://irolog.free.fr/joe.htm

--------------------------------------------------------------------------


----------
>
>




Avatar
LE TROLL
Bonjour Jacques,

Merci, oui j'ai appris jadis les priorités, mais je ne m'en souviens
plus, j'ai bien passé un demi-heures à chercher partout, y compris si ma
liste ne débordait pas et provoquait des aberrations, enfin c'est résolu.

--
Merci beaucoup, au revoir et à bientôt :o)
------
Romans, logiciels, email, site personnel
http://irolog.free.fr/joe.htm
------------------------------------------------------------------------------------
"Jacques" a écrit dans le message de news:
%
Bonjour,

Un même calcul ne peut aboutir à deux résultats différents : il est donc
nécessaire d'établir une convention sur l'ordre dans lequel effectuer les
calculs.


Par ordre décroissant de priorité seront effectués dans l'ordre:

a.. les puissances (y compris les racines carrées);
b.. puis les multiplications et les divisions;
c.. enfin les additions et les soustractions.

1000/5-1 = 199
1000 /(5-1) = 250

Jacques(BE)




"LE TROLL" <le a écrit dans le message de news:

J'ai trouvé, c'est à caus de:

x = 1000 / y - 1

Il faut écrire:

x = 1000 / (y - 1)

Mais pourquoi, quelqu'un peut-il m'expliquer ???


--
Merci beaucoup, au revoir et à bientôt :o)
------
Romans, logiciels, email, site personnel
http://irolog.free.fr/joe.htm
--------------------------------------------------------------------------


----------
"LE TROLL" <le a écrit dans le message de news:

> Bonjour,
>
> Je ne comprends pas d'où ça vient:
>
> J'ai une variable "pas" As Double
> je fais
> pas = 1000 / list1.listcount-1
> list1.listcount = 1590 dans mon test
> Donc je devrais trouver
>
>
> 1000 / 1590 = 0,62893082 (vérif Excel)
>
> Or je trouve "-0,371464487743558"
>
> ???
>
> Certes si on fait le complément on retrouve:
> 1 -0,371464487743558 = 0,62893082
>
> D'ou (0,3... * -1) + 0,6... = 1
>
> La solution bâtarde serait de faire:
> ((-0,371464487743558 * 2) * -1) = 0,6...
>
> Mais bon, normalement ça ne devrait pas donner ça...
>
> Ensuite je passe ça en Cint pour alimenter ma ProgressBar, toutefois


c'est
> pas terrible de lui filer des négatifs...
>
> Et la liste est bien inférieure à sa capacité, je teste si >32000


stop
> le chargement, donc ce n'est pas le listcount qui peut produire des
> aberrations...
>
> Je ne comprends pas pourquoi je me retrouve avec un négatif en


divisant
> un positif par un autre positif ???
>
> Voici le code:
>
> Dim pas As Double, totalPas As Double, avance As Integer
> ............
> pas = 1000 / List1.ListCount - 1
> totalPas = 0
> .........
> for i...
> .........
> totalPas = totalPas + pas
> avance = CInt(totalPas)
> ProgressBar1.Value = avance
> next i
>
>
>
> Si vous avez une idée ???
>
>
> Merci beaucoup, au revoir et à bientôt :o)
> ------
> Romans, logiciels, email, site personnel
> http://irolog.free.fr/joe.htm

--------------------------------------------------------------------------


----------
>
>