Feladat:
1.0 - 0.9 - 0.1 = 0
Galculator: -2.77555756156e-17
Xcalc: -2.77555e-17
bc: 0
PHP: -2.7755575615629E-17
- 3943 megtekintés
Hozzászólások
nem algebra vagy milyen módban van a galculator.?
--
God bless you, Captain Hindsight..
- A hozzászóláshoz be kell jelentkezni
Algebra módban.
--
A főnököm mindig megtartja amit ígér, ha pénzt ígér azt is!
- A hozzászóláshoz be kell jelentkezni
JavaScript: -2.7755575615628914e-17
a bc az mi, ami 0-át produkál? :)
- A hozzászóláshoz be kell jelentkezni
http://www.manpagez.com/man/1/bc/
Üdv,
Marci
- A hozzászóláshoz be kell jelentkezni
omfg
------------------------
Program terminated
{0} ok boto
boto ?
- A hozzászóláshoz be kell jelentkezni
Ez bizony ilyen. Pl.: https://docs.python.org/2/tutorial/floatingpoint.html
- A hozzászóláshoz be kell jelentkezni
bc bug :)
- A hozzászóláshoz be kell jelentkezni
A legkimerítőbb írás, amit valaha olvastam a témában: https://randomascii.wordpress.com/2012/02/25/comparing-floating-point-n…
- A hozzászóláshoz be kell jelentkezni
Nice one!
--
http://naszta.hu
- A hozzászóláshoz be kell jelentkezni
A 0.1 nem ábrázolható kettes számrendszerben véges kettedestörtként (ezért van .NET-ben decimal típus).
Ugyanúgy, ahogy az 1/3 nem ábrázolható véges tizedestörtként. De pl. 3-as számrendszerben véges (0.1).
Fuszenecker Róbert
- A hozzászóláshoz be kell jelentkezni
Én rendszeresen meglepődöm, hogy ezen rendszeresen meglepődnek... :-(
Egyetem első évében...
Már egy erősebb középiskolában...
Még mit nem, esetleg az interneten eldugva, fellelhetetlen módon...
De nem.
A HUP, az kell az ismeretszerzéshez. Az.
- A hozzászóláshoz be kell jelentkezni
Kb 28 éve volt hogy végeztem a középiskolában. A matematika nem emelt szintű és nem is infós volt. Egyébként igen meglepődtem.
Most így nekiláttam és megnéztem az alábbi műveletet:
1.0-0.1-0.1-0.1-0.1-0.1-0.1-0.1-0.1-0.1-0.1=0
eredmények közben (galculator):
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
és a végén:
-5.55111512313e-17
A lentebb linkelt videót is megnéztem. Így már értem nagyjából.
Kipróbáltam a Win7 számológépét is. Az helyesen nullát ír.
--
A főnököm mindig megtartja amit ígér, ha pénzt ígér azt is!
- A hozzászóláshoz be kell jelentkezni
Világos. Azon továbbra is meglepődöm, ha 28 év alatt - gondolom IT területen - ezzel egyszer sem találkozik valaki.
- A hozzászóláshoz be kell jelentkezni
Nem értem miért. Az IT terület "marha nagy" :). Pld. én sem tudtam róla, nekem sem említették '93-ig a problémát egyetlen tantárgyban sem, az akkori programozási tantárgyak (DOS/BASIC, Assembly, C, Pascal, dBase/Clipper, Sql stb. keretében sem merült fel - "sajnos" nem számológépet kaptam vizsgafeladatként, mert akkor talán az assembly/c vonalon belefutok a problémába. Az élet meg úgy hozta, hogy azóta a programozási tapasztalatom olyan nyelvekre korlátozódott, amelyek tudtak rendesen számolni :)
De ha teszem azt valaki HW vagy üzemeltetés vonalom mozog, és hasonlóan nem említi meg neki senki (mert amikor diplomázott még nem volt tanagyag) akkor leélheti úgy az életét IT területen, hogy nem is tud a jelenségről, és pont itt a HUP-on találkozik vele.
- A hozzászóláshoz be kell jelentkezni
"mert amikor diplomázott még nem volt tanagyag"
Ilyen állat pedig nincs. Minél régebben került valaki erre a pályára, annál inkább tudni kellett (volna) a dobozba rejtett határokról.
Hogy nem mindenkinek volt érdekes az alapozás alapozásának számító bináris számábrázolás és aritmetika, illetve az is csak egy utolsó éjszaka felkészülős és az azt követő első berúgással elfelejtős téma volt, azt inkább elhiszem.
- A hozzászóláshoz be kell jelentkezni
omfg.
>tudtak rendesen számolni
Harom percet szantam egy gyors JS, Python, Java, C++-ra. Ezzel kabe ma a szoftverfejlesztes 80%-at le is fedem. Mindegyikben -2.77556e-17 jott ki.
MERT EZ NEM NYELVFUGGO, ez ieee szabvany... Kicsit olvassatok mar.
- A hozzászóláshoz be kell jelentkezni
És ha a kolléga kizárólag dc-ben megírandó feladatokkal foglalkozott eddigi munkája során? Úgy könnyen érzi magát biztonságban az ember.
- A hozzászóláshoz be kell jelentkezni
Mire fel az omfg, a maradék 20% nem számít?
Én kb. 8 év .NET-ezés alatt kb. egyszer sem használtam munka közben floating pointot, decimalt annál inkább (üzleti szektor, pénzügyi és hasonló számítások). Oracle-ben ugyanez. Speciel vagyok olyan kocka, hogy ettől még a floating pointot is ismertem, de ez semmit nem számított.
Azt nem vitatom viszont, hogy ha valaki már deklarál egy floating point változót, akkor tudja, hogy mi van benne. És az epszilonos hasonlításnál sokkal többről van szó, ld. fenti linkem.
- A hozzászóláshoz be kell jelentkezni
omfg = "MERT EZ NEM NYELVFUGGO, ez ieee szabvany"
- A hozzászóláshoz be kell jelentkezni
>JS, Python, Java, C++
- A hozzászóláshoz be kell jelentkezni
Igaz, clippert nem nézegettem. :'-(
Kösz az entryt, látom több év után összejött öt aktív, ilyenkor nem jár valami pirospont, vagy mialófasz?
- A hozzászóláshoz be kell jelentkezni
már hogy úgy érted szerény véleményed szerint 5 az már valami a hupmeme-ben?
752813 Mar 7 20:52 hupmeme.htm
- A hozzászóláshoz be kell jelentkezni
Óóóóhellnóó.
- A hozzászóláshoz be kell jelentkezni
Ha a piros pont nem is, a lófasz csak meglett...
:)
- A hozzászóláshoz be kell jelentkezni
Ott volt Smy Lee!
De Pld. Clipperben a kérdéses példa alapesetben 0.0-t ad eredménynek. (Ha "erőszakkal" pld. 30 tizedesig íratom ki az eredményt, akkor kiderül a "turpisság", de erre gyanítom a Clipper életciklusa során nem sűrűn volt szükség, nekem sosem kellett, a könyvelők amúgy is ezres tételekben gondolkodnak :D )
A C64 sqr(25^2) "anomáliájára" a mai napig emlékszem. Én konkrétan erre a 0.1-s példára értettem, hogy az IT területén az ember leélheti úgy az életét, hogy nem találkozik vele. Gyanítom, hogy anno a tanárom nem hozta fel ezt példaként (mert ez szerintem iskolapélda, örökre bent marad az emberben és az első koleszbuli sem mossa ki az agyból :) ). Egyébként már nem emlékszem hogy '91-ben a Kandón milyen mélységekben oktatták témát. Mivel műegyetemes ismerőseink irígykedtek ránk, hogy hozzájuk képest mi géppel kelünk és fekszünk, elképzelhető, hogy nem mélyedtünk el túlságosan. A C64 óta nem futottam bele hasonló problémába. Most meg már nem fejlesztés a munkám, így ha nem olvasom a topikot, akkor lehet, hogy úgy halok meg, hogy nem tudok a 0.1 jelenségről.
- A hozzászóláshoz be kell jelentkezni
Ha mikor Ct tanítottak nem beszéltek a floating pointról, akkor vagy átaludtad, vagy valami ritka nagy dilettáns tartott órát.
szerk: lejebb olvastam, hogy a 0.1 ábrázolhatóságára értetted, szorri.
- A hozzászóláshoz be kell jelentkezni
Pótoljuk be, amit az iskola vagy az odajáró eddig elmulasztott: https://www.youtube.com/watch?v=PZRI1IfStY0
- A hozzászóláshoz be kell jelentkezni
gnome-calculator mesterfaj jelentkezik: 0-t kapok eredményül
- A hozzászóláshoz be kell jelentkezni
Sőt!
SHARP EL-531A mesterfaj jelentkezik: 0-t kapok eredményül. :)
Üdv,
Marci
- A hozzászóláshoz be kell jelentkezni
Jó kis számológépek voltak ezek. :3
- A hozzászóláshoz be kell jelentkezni
Voltak? Napi használatban van, 1988 óta... :)
Ezzel együtt már az idejére sem emlékszem, mikor cseréltünk benne elemet...
Üdv,
Marci
- A hozzászóláshoz be kell jelentkezni
Csak azért voltak, mert ma már nem lehet újonnan kapni.
Amúgy nem árt néha az elemre ránézni, nehogy úgy járj mint én: kifolyt, és azóta nem kapcsol be a számológép. :c
- A hozzászóláshoz be kell jelentkezni
:( R.I.P.
Nota bene, az akkori gombelemek se nagyon folytak ki...
Kár, hogy a régi jó dolgokból nem maradt semmi... :)
Üdv,
Marci
- A hozzászóláshoz be kell jelentkezni
Az én számológépembe 2 db AA-s elem kellett.
Most nézem, hogy nem ugyan az a modell (EL-230), csak a dizájnjuk hasonló...
- A hozzászóláshoz be kell jelentkezni
A gcalctool is 0-át saccol.
- A hozzászóláshoz be kell jelentkezni
C moka:
float a=1.0, b=0.9, c=0.1;
printf("%f %f %f = %f\n", a, b, c, a-b-c);
1.000000 0.900000 0.100000 = 0.000000
double a=1.0, b=0.9, c=0.1;
printf("%f %f %f = %f\n", a, b, c, a-b-c);
1.000000 0.900000 0.100000 = -0.000000
--
"Van olyan ember sok az oldalon, akinek a kommentjeinek 100%-a zaj, oket miert nem kommentelitek ilyen lelkesen?" (hrgy84)
- A hozzászóláshoz be kell jelentkezni
Akkor most próbáld ki ugyanezeket mondjuk %.20f formázással...
- A hozzászóláshoz be kell jelentkezni
float: 1.00000000000000000000 0.89999997615814208984 0.10000000149011611938 = 0.00000002235174179077
double: 1.00000000000000000000 0.90000000000000002220 0.10000000000000000555 = -0.00000000000000002776
--
"Van olyan ember sok az oldalon, akinek a kommentjeinek 100%-a zaj, oket miert nem kommentelitek ilyen lelkesen?" (hrgy84)
- A hozzászóláshoz be kell jelentkezni
program proba;
uses sysutils;
begin
writeln (FloatToSTR(1 - 0.9 - 0.1));
end.
2.03287907341032E-20
:D
- A hozzászóláshoz be kell jelentkezni
Az igazi problémák akkor jönnek, ha összehasonlítasz!
Marha nagyot lehet szívni, ha egy if - ben azt hiszed, hogy
egyszercsak egyenlő lesz nullával egy érték, azt mégse.
Én így szoktam:
#define LIMIT 0.00000001
double dVariable;
if (fabs(dVariable) < LIMIT)
Persze a LIMIT értékét attól függően választom, hogy éppen
mi a feladat.
> Sol omnibus lucet.
- A hozzászóláshoz be kell jelentkezni
.
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni