Forum » Programiranje » [C] floating point, deljenje in natančnost
[C] floating point, deljenje in natančnost
alphasaphir ::
Pozdravljeni,
v šolskem primeru imam težave s float in double precision, pa bi vas prosil za pomoč.
Del kode:
OPOMBA *1 - ce dam namesto %f - %-10.4f potem je 10 mest dolzine in 4 mesta od tega za piko, poravnano levo - decimalnih, vendar jaz ne vem kak bo vnos, enkrat bo lahko 1.3, drugič bo lahko 123456.789 in pri teh daljših primerih mi na 5 decimalki narobe izračuna y/2 (ni 61728,3945, ampak sta za 3945 še 2 števili (razumem zakaj 2, ker je natanćnost brez omejitev c C pač 6 decimalk, ampak zakaj pa še 2 v tem primeru pa ne razumem in ne vem kako to rešiti - računalnik mi z mojo kodo namreč narobe zračuna in to v marsikaterem primeru kjer je številka daljša oziroma ima y 3 ali več decimalk)
OPOMBA *2 - sta double in float oba floating point ali ne? Na zaslonu moram izipsati v floating point notation (da se decimalna pika lahko premika, koliko to razumem) double vem da je večji od float - je še kaka druga razlika?
- kako zapišem v double: ker če definiram y kot double, mi prvo dvoje izpiše kot: 0.0000000 - po moji skripti pa bi za double naj bilo tudi %f, pa nikakor ne dela. Se pravi bi moralo delat vse vredu tudi za večja števila, če samo float pri deklaraciji spremenljivk spremenim z double; pa ne gre.
OPOMBA *3 - se da nastavljati natančnost %e in %g? ker tu tudi kar lepo zaokroži
Delam na WIN7 in gcc compilerju- bi lahko to bil razlog za katero od mojih težav?
Najlepša hvala!
v šolskem primeru imam težave s float in double precision, pa bi vas prosil za pomoč.
Del kode:
#include<stdio.h> float y; int main() { // Branje realnega stevila printf("Vstavite realno stevilo: "); scanf("%f", &y); printf("\nPolovica: %f", y/2); //OPOMBA*1 printf("\nFloating-point notation: %-10.4f", y);//OPOMBA *2 printf("\nExponenten zapis: %-e", y);//OPOMBA *3 return 0; }
OPOMBA *1 - ce dam namesto %f - %-10.4f potem je 10 mest dolzine in 4 mesta od tega za piko, poravnano levo - decimalnih, vendar jaz ne vem kak bo vnos, enkrat bo lahko 1.3, drugič bo lahko 123456.789 in pri teh daljših primerih mi na 5 decimalki narobe izračuna y/2 (ni 61728,3945, ampak sta za 3945 še 2 števili (razumem zakaj 2, ker je natanćnost brez omejitev c C pač 6 decimalk, ampak zakaj pa še 2 v tem primeru pa ne razumem in ne vem kako to rešiti - računalnik mi z mojo kodo namreč narobe zračuna in to v marsikaterem primeru kjer je številka daljša oziroma ima y 3 ali več decimalk)
OPOMBA *2 - sta double in float oba floating point ali ne? Na zaslonu moram izipsati v floating point notation (da se decimalna pika lahko premika, koliko to razumem) double vem da je večji od float - je še kaka druga razlika?
- kako zapišem v double: ker če definiram y kot double, mi prvo dvoje izpiše kot: 0.0000000 - po moji skripti pa bi za double naj bilo tudi %f, pa nikakor ne dela. Se pravi bi moralo delat vse vredu tudi za večja števila, če samo float pri deklaraciji spremenljivk spremenim z double; pa ne gre.
OPOMBA *3 - se da nastavljati natančnost %e in %g? ker tu tudi kar lepo zaokroži
Delam na WIN7 in gcc compilerju- bi lahko to bil razlog za katero od mojih težav?
Najlepša hvala!
- spremenil: alphasaphir ()
alphasaphir ::
Za prvo vprašanje sem ugotovil, da je za mene dovolj natančno plus da sem prebral priporočene teme. Drugo si mi odgovoril! Tretje pa je odvisno samo od tipa spremenljivke.
Hvala
Hvala
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | float vs decimalOddelek: Programiranje | 6307 (4440) | Looooooka |
» | C programiranje (strani: 1 2 3 )Oddelek: Programiranje | 27809 (18105) | amacar |
» | Neznan problem #2 [C]Oddelek: Programiranje | 1688 (1478) | videc |
» | [C] NalogaOddelek: Programiranje | 997 (818) | Apfelsaft |
» | [c] char zadevaOddelek: Programiranje | 2262 (2060) | TheCyborg |