Forum » Programiranje » [java] problem z decimalkami
[java] problem z decimalkami
major9 ::
public class problem
{
public static void main (String[]args)
{
double x=32;
double clen =0;
double clen1 =0;
clen = (1/4)*x;
clen1 =x/4;
System.out.println("clen: "+clen);
System.out.println("clen1: "+clen1);
}
}
prosim če mi nekdo lahko pove zakaj vrne za clen in clen1 različen rezultat ???
{
public static void main (String[]args)
{
double x=32;
double clen =0;
double clen1 =0;
clen = (1/4)*x;
clen1 =x/4;
System.out.println("clen: "+clen);
System.out.println("clen1: "+clen1);
}
}
prosim če mi nekdo lahko pove zakaj vrne za clen in clen1 različen rezultat ???
- spremenilo: snow ()
major9 ::
Oziroma zanima me zakaj če je spremenljivka double ne vrne točnega rezultata amoak vrne 0.0;
recimo
double clen = 1/4 ;
Vrne rezultat 0.0 in ne razumem zakaj ne vrne 0.25 ??
recimo
double clen = 1/4 ;
Vrne rezultat 0.0 in ne razumem zakaj ne vrne 0.25 ??
DMouse ::
Zato ker je 1/4 celoštevilsko deljenje in je enako 0, 0*x je pa spet 0. Če hočeš deljenje v plavajoči vejici, mora biti vsaj en člen (deljenec ali delitelj) v plavajoči vejici:
1.0/4 ali 1/4.0
ali če imaš spremenljivke:
int a = 2;
int b=3;
double rezultat = (a*1.0)/b;
1.0/4 ali 1/4.0
ali če imaš spremenljivke:
int a = 2;
int b=3;
double rezultat = (a*1.0)/b;
Zgodovina sprememb…
- spremenil: DMouse ()
kunigunda ::
probi tole:
clen = (double)(1/4)*x;
ce ti isto vrne kot
clen = (1/4)*x;
Glede na to da je x double, 1 in 4 pa sta int, 1/4 obravnava kot int (tkole iz glave)
pol probaj pa se
clen = (1.00 / 4.00) * x
clen = (double)(1/4)*x;
ce ti isto vrne kot
clen = (1/4)*x;
Glede na to da je x double, 1 in 4 pa sta int, 1/4 obravnava kot int (tkole iz glave)
pol probaj pa se
clen = (1.00 / 4.00) * x
snow ::
major9!
V področju proramiranje je potrebno naslove tem oblikovati v skladu z PREBERI ME: označevanje topicov v oddelku programiranje.
Popravek: V zgoraj omenjeni temi je tudi razloženo, kako opremiti kodo za lepši in predvsem bolj berljiv prikaz.
V področju proramiranje je potrebno naslove tem oblikovati v skladu z PREBERI ME: označevanje topicov v oddelku programiranje.
Popravek: V zgoraj omenjeni temi je tudi razloženo, kako opremiti kodo za lepši in predvsem bolj berljiv prikaz.
Random mutation plus nonrandom cumulative natural selection - Richard Dawkins
Zgodovina sprememb…
- spremenilo: snow ()
Genetic ::
clen = (double)(1/4)*x;
(double)(1/4) bo pac namesto 0 (1/4) vrnil 0.0 (double version of zero), clen bo se vedno 0.0
Beezgetz ::
oi,
sem iskal, pa sem to našel, sicer ni to kar iščem, ali pa tega ne razumem...
skratka, jaz v NetBeavsu [Java] delam aplikacijo, ki nekaj sešteva z double -i in pol to izpiše v jLabel -u.
Problem je, ker je izpis številke recimo 5.67875356775, jaz bi pa rad zaokrožil na eno decimalko, ali pa sploh ne.
Da bi izpisalo 5,7 oziroma 6.
Sem bolj začetnik, še javaDoc ne znam vstavit v NetBeans... koda je najbolj zaželena...
Hvala
Edit;
Imam ga!
This program uses the same formatting object many times.
Produces this output. The first floating point number is converted by a 2 decimal place DecimalFormat object and the second is the default conversion.
1/1 = 1.00, 1.0
1/2 = 0.50, 0.5
1/3 = 0.33, 0.3333333333333333 // Round down.
1/4 = 0.25, 0.25
1/5 = 0.20, 0.2
1/6 = 0.17, 0.16666666666666666 // Round up.
1/7 = 0.14, 0.14285714285714285
1/8 = 0.12, 0.125 // Half-even round down.
1/9 = 0.11, 0.1111111111111111
1/10 = 0.10, 0.1
sem iskal, pa sem to našel, sicer ni to kar iščem, ali pa tega ne razumem...
skratka, jaz v NetBeavsu [Java] delam aplikacijo, ki nekaj sešteva z double -i in pol to izpiše v jLabel -u.
Problem je, ker je izpis številke recimo 5.67875356775, jaz bi pa rad zaokrožil na eno decimalko, ali pa sploh ne.
Da bi izpisalo 5,7 oziroma 6.
Sem bolj začetnik, še javaDoc ne znam vstavit v NetBeans... koda je najbolj zaželena...
Hvala
Edit;
Imam ga!
This program uses the same formatting object many times.
// File: formatTest/FormatTest.java // Description: Test default and DecimalFormat formatting. // Author: Michael Maus // Date: 2000-10-27, 2000-11-07, 2005-02-13 import java.text.DecimalFormat; public class FormatTest { public static void main(String[] args) { DecimalFormat twoPlaces = new DecimalFormat("0.00"); for (int i=1; i<=10; i++) { double val = 1.0 / i; System.out.println("1/" + i + " = " + twoPlaces.format(val) + ", " + val); } } }
Produces this output. The first floating point number is converted by a 2 decimal place DecimalFormat object and the second is the default conversion.
1/1 = 1.00, 1.0
1/2 = 0.50, 0.5
1/3 = 0.33, 0.3333333333333333 // Round down.
1/4 = 0.25, 0.25
1/5 = 0.20, 0.2
1/6 = 0.17, 0.16666666666666666 // Round up.
1/7 = 0.14, 0.14285714285714285
1/8 = 0.12, 0.125 // Half-even round down.
1/9 = 0.11, 0.1111111111111111
1/10 = 0.10, 0.1
Zgodovina sprememb…
- spremenil: Beezgetz ()
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Java[kotne funkcije]Oddelek: Šola | 669 (625) | Mesar |
» | [java] Osnovna vprašanjaOddelek: Programiranje | 2621 (1628) | killa bee |
» | zaokrožanje števil double na dve decimalkiOddelek: Programiranje | 2017 (1738) | win64 |
» | [Java] Deljenje in ostanekOddelek: Programiranje | 3086 (2670) | pr2501 |
» | [Java] Liha potencaOddelek: Programiranje | 1817 (1711) | bijonda |