C++ double to int cast

(Firma: egal) #6866767
Lesenswert?
• ▲
▼
float schrieb:
> Ist zwar nur float, aber: 4.06 ist 4.059999942779541015625.
Das ist genau so einer dieser Werte wo das einfache abschneiden der 
Nachkommastellen nicht zum Ziel führt.

Zum ausprobieren:
1
    int x1 = (int)(4.06 * 100);
2
    int x2 = (int)(4.06 * 100.0);
3
    int x3 = (int)((double)4.06 * (double)100.0);
4
    int x4 = (int)round(4.06 * 100.0);
5

6
    printf("%d %d %d %d\n", x1, x2, x3, x4);

siehe auch:
- https://en.cppreference.com/w/cpp/numeric/math/round
Gast #6872817
Lesenswert?
• ▲
▼
Dirk B. schrieb:
> Yalu X. schrieb:
>> ls double ist es
>>
>> 4.0599999999999996092014953319448977708816528320312500
>>
>> Die nächstgrößere als double darstellbare Zahl ist
>>
>> 4.0600000000000004973799150320701301097869873046875000
>
> Da sieht man, dass die + 0.01 noch viel zu groß sind.

Für was ist 0.01 zu groß?
Gast #6873223
Lesenswert?
• ▲
▼
Εrnst B. schrieb:
> mh schrieb:
>> Und wofür will er das vermutlich gesuchte epsilon verwenden?
>
> um die kleinste Zahl zu finden, die er zu
> 4.0599999999999996092014953319448977708816528320312500
> dazuaddieren muss, um
> auf "4.06" zu kommen.

Welches praktische Problem löst das? Ok, es ist eine Antwort auf die 
Frage des TO, wenn auch wenig hilfreich.
Gast #6873700
Lesenswert?
• ▲
▼
Axel S. schrieb:
> mh schrieb:
>> Εrnst B. schrieb:
>
>>> er sucht vmtl.
>>>   std::numeric_limits<double>::epsilon
>
>> Und wofür will er das vermutlich gesuchte epsilon verwenden?
>
> Um es mit Null zu vergleichen?
>
> Mathemathikerwitz: Sei epsilon gleich Null ...

Haha ... witzig ...

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.