La Division en C++ ne fonctionne pas comme prévu
Je travaillais sur autre chose, mais tout est sorti à zéro, j'ai donc fait cette minimaliste exemple, et le résultat est toujours 0.
#include <iostream>
int main(int argc, char** argv)
{
double f=3/5;
std::cout << f;
return 0;
}
Ce qui me manque?
Vous devez vous connecter pour publier un commentaire.
Il vous manque le fait que les 3 et 5 sont des nombres entiers, de sorte que vous obtenez division entière. Pour faire le compilateur d'effectuer floating point de la division, faire l'un d'eux un nombre réel:
Il n'a pas besoin être
.0
, vous pouvez également faire3./5
ou3/5.
ou3e+0 /5
ou3 /5e-0
ou0xCp-2 /5
ou... Il y a seulement besoin d'être un indicateur impliqués de sorte que le compilateur sait qu'il est censé effectuer la division en virgule flottante.Une autre possibilité:
double f=double(3)/5
. C'est beaucoup plus saisissant, mais il ne laisse pas de doute à ce que vous faites.Ou tout simplement utiliser
double f=.6
, qui a également fait le tour...essayez ceci:
cela devrait résoudre votre problème
Essayez de mettre un
.0
d'après l'un des diviseurs. Cela permettra de les convertir en virgule flottante littéraux.Vous êtes en utilisant des entiers. Vous pouvez beaucoup de choses à faire votre constantes double comme leftaroundabout etats, cependant, qui n'est pas bonne, propre bien. Il est difficile de lire et de confusion. Si vous voulez 3 et 5 de les rendre 3.0 et 5.0. Tout le monde saura ce que tu veux dire si ils sont obligés de lire votre code. Beaucoup de ce qu'il/elle déclare vraiment vous oblige à connaître le C/C++ et comment les flotteurs sont du stockage à faire des têtes ou queues.
0xCp-2 / 5
n'était pas à prendre vraiment au sérieux! ...Mais comme pour l'utilisation de 3.0: c'est une question de goût. Personnellement, je déteste l'écrire de cette façon, parce que dans la science, tout nombre fini de chiffres après la virgule conseils une sorte d'inexactitude des valeurs mesurées, etc., alors quand je vois 3.0, je pense toujours à 3±.05, et 3.0/5.0 est .6±.01 pour moi. Ce n'est pas le double de la précision! Je préfère3./5
.Dans le cas, vous enregistrez votre générique variables avec
int
et à obtenir le ratio dedouble
: