» »

[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 ???
  • 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 ??

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;

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

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.
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

kunigunda ::

Ja, sej to sem mu hotel povedati. Zato sem mu spodaj napisal pravilno sintakso...

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.
// 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 ()

NeOman ::

Math.round( double );
http://xhtml.si - HTML, CSS in JavaScript po vaši meri.

NeOman ::

http://xhtml.si - HTML, CSS in JavaScript po vaši meri.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Java[kotne funkcije]

Oddelek: Šola
5681 (637) Mesar
»

[java] Osnovna vprašanja

Oddelek: Programiranje
372636 (1643) killa bee
»

zaokrožanje števil double na dve decimalki

Oddelek: Programiranje
52029 (1750) win64
»

[Java] Deljenje in ostanek

Oddelek: Programiranje
143113 (2697) pr2501
»

[Java] Liha potenca

Oddelek: Programiranje
81826 (1720) bijonda

Več podobnih tem