Dividieren zweier Ganzzahlen, um ein Float-Ergebnis zu erzeugen [duplicate]

Lesezeit: 2 Minuten

Benutzer-Avatar
jwbensley

Mögliches Duplikat:

Warum kann ich kein Double zurückgeben, wenn zwei Ints geteilt werden

Mein C++-Programm schneidet die Ausgabe meiner Integer-Division ab, selbst wenn ich versuche, die Ausgabe in einen Float zu platzieren. Wie kann ich dies verhindern, während ich die Variablen (a & b) als ganze Zahlen behalte?

user@box:~/c/precision$ cat precision.cpp
#include <iostream>
#include <iomanip>
using namespace std;

int main()
{
  int a = 10, b = 3;
  float ans = (a/b);
  cout<<fixed<<setprecision(3);
  cout << (a/b) << endl;
  cout << ans << endl;
  return 0;
}

user@box:~/c/precision$ g++ -o precision precision.cpp 
user@box:~/c/precision$ ./precision 
3
3.000

  • float ans = ((float)a/b); (oder static_cast, um die Puristen zu erfreuen)

    – Vlad

    16. September 2012 um 13:40 Uhr


  • Ja, mein Fehler, ich habe schon rumgesucht, aber diesen Beitrag nicht gefunden. Es ist ein Dup, mein Böser!

    – jwbensley

    16. September 2012 um 13:42 Uhr

Benutzer-Avatar
cdiggins

Wandeln Sie die Operanden in Floats um:

float ans = (float)a / (float)b;

  • Außerdem haben Floats nur so viel Präzision. Ihre ganzzahlige Division erfordert möglicherweise die “doppelte Genauigkeit” von a double

    – rekursion.ninja

    16. September 2012 um 13:46 Uhr


  • Genau genommen müssen Sie nur eine Ganzzahl in Float umwandeln, obwohl dies es besonders deutlich macht.

    – Gerhard

    2. Mai 2014 um 17:46 Uhr

  • INT K; K/3; Hier / wird gefordert INT Klasse, was ist dann der Grund dafür, dass Cast One int sogar Nominator oder Nenner funktioniert?

    – Asif Mushtaq

    16. Januar 2016 um 15:54 Uhr

  • Da wir hier C++ verwenden, verwenden Sie static_cast. Beachten Sie, dass es möglich ist, die Typteilungsregel zu verwenden und es einfach zu tun float ans = static_cast<float>(a)/b;

    – Hitokage

    19. Oktober 2017 um 6:20 Uhr

  • Absoluter MAD LAD! Vielen Dank.

    – Wael Assaf

    19. Januar 2018 um 17:45 Uhr

1013190cookie-checkDividieren zweier Ganzzahlen, um ein Float-Ergebnis zu erzeugen [duplicate]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy