Forum » Programiranje » C# aritmetične operacije
C# aritmetične operacije
lambda ::
Ok, ravnokar sem naletel na eno smešno zadevo, ko neke konverzije enot niso delovale tako kot bi morale, včasih se je pojavil en kup decimalk zadaj, čeprav se ne bi smel. VS2008, dodam breakpoint, vržem zadevo kar v "watch" in mi izpljune tole:
13.635/0.001 --> 13635.0
Tole je ok, ampak tole:
13.636/0.001 --> 13635.999999999998 ?!?
13.636*1000 --> 13636.0
13.636*(1/0.001) --> 13636.0
Type Approximate range Precision .NET Framework type
double ±5.0 × 10−324 to ±1.7 × 10308 15-16 digits System.Double
Zna kdo pojasnit vse tole?
13.635/0.001 --> 13635.0
Tole je ok, ampak tole:
13.636/0.001 --> 13635.999999999998 ?!?
13.636*1000 --> 13636.0
13.636*(1/0.001) --> 13636.0
Type Approximate range Precision .NET Framework type
double ±5.0 × 10−324 to ±1.7 × 10308 15-16 digits System.Double
Zna kdo pojasnit vse tole?
BlueRunner ::
Če želiš natančnost, uporabljaj tip Decimal. Float in Double sta samo približka podložna zaokroževanju in akumulaciji napak. 13635.999999999998 pa je pač rezultat, ki JE PRAVILEN z natančnostjo na tistih deklariranih 16 decimalk.
Zgodovina sprememb…
- spremenilo: BlueRunner ()
Mavrik ::
Števila s float/double zapisu se v računalnikih zapisujejo v IEEE 754 formatu, ki nekaterih števil ne zna čist točno prikazati. Prav tako prihaja pri računanju do zaokroževanja.
Uporabljaj (počasne) namenske tipe če rabiš natančnost.
Uporabljaj (počasne) namenske tipe če rabiš natančnost.
The truth is rarely pure and never simple.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | float vs decimalOddelek: Programiranje | 6259 (4392) | Looooooka |
» | Internet - Hrvaška - kartica za 7 dniOddelek: Omrežja in internet | 3141 (2785) | Daniel |
» | Največji otok v jadranskem morju?Oddelek: Loža | 5526 (4793) | Okapi |
» | Uspešna faktorizacija RSA-200 in RSA-640Oddelek: Novice / Znanost in tehnologija | 4212 (3377) | CaqKa |
» | c++ preverjanje stevilOddelek: Programiranje | 1684 (1479) | ]Fusion[ |