/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
Cast fra int til Math.floor
Fra : David Poulsen


Dato : 19-10-02 02:07

Davs NG

Jeg er igang med et lille hurtigt program og det skal bare kunne flytte fra
en int til Math.floor(double);

Et hurtigt og lidt tankeløst eksempel, men hvad fanden klokken er nu også
snart 10 min over 3 om natten...

Jeg havde forestillet mig noget lignende
int a = Math.floor(b/c);

Men så kommer min compiler op og brokker sig over at den muligvis mister
præcision (Direkt oversat)

--> Possible loss of precision: double, required: int at line xx, column yy

Hmm hvad kan der gøres??

Mvh og godnat

David



 
 
Mikkel Bundgaard (19-10-2002)
Kommentar
Fra : Mikkel Bundgaard


Dato : 19-10-02 08:52

On Sat, 19 Oct 2002 03:07:28 +0200, David Poulsen wrote:

> Davs NG
>
> Jeg er igang med et lille hurtigt program og det skal bare kunne flytte
> fra en int til Math.floor(double);
Er det ikke nærmere et cast fra double til int ???

> Et hurtigt og lidt tankeløst eksempel, men hvad fanden klokken er nu
> også snart 10 min over 3 om natten...
>
> Jeg havde forestillet mig noget lignende
> int a = Math.floor(b/c);
Prøv med
int a = ( int ) Math.floor(b/c);

Floor returnere en double (se API), så du skal caste den til en int.
> Men så kommer min compiler op og brokker sig over at den muligvis mister
> præcision (Direkt oversat)
>
> --> Possible loss of precision: double, required: int at line xx, column
> yy
>
> David
Håber du kan bruge det til noget
--
Mikkel Bundgaard
Student at IT University of Copenhagen
http://officehelp.gone.dk
Codito, Ergo Sum

David Poulsen (19-10-2002)
Kommentar
Fra : David Poulsen


Dato : 19-10-02 16:06


"Mikkel Bundgaard" <mikkelbu@teliamail.dk> wrote in message
news:pan.2002.10.19.09.51.59.320538.2137@teliamail.dk...
> On Sat, 19 Oct 2002 03:07:28 +0200, David Poulsen wrote:
>
> > Davs NG
> >
> > Jeg er igang med et lille hurtigt program og det skal bare kunne flytte
> > fra en int til Math.floor(double);
> Er det ikke nærmere et cast fra double til int ???
>
> > Et hurtigt og lidt tankeløst eksempel, men hvad fanden klokken er nu
> > også snart 10 min over 3 om natten...
> >
> > Jeg havde forestillet mig noget lignende
> > int a = Math.floor(b/c);
> Prøv med
> int a = ( int ) Math.floor(b/c);
>
> Floor returnere en double (se API), så du skal caste den til en int.
> > Men så kommer min compiler op og brokker sig over at den muligvis mister
> > præcision (Direkt oversat)
> >
> > --> Possible loss of precision: double, required: int at line xx, column
> > yy
> >
> > David
> Håber du kan bruge det til noget

Både ja og nej fordi jeg har gjort det du siger... problemet er bare at den
returnere nul? Og det forstår jeg så ikke en skid af.

Nå men ellers tak for svaret.

Mvh

David



Mikkel Bundgaard (19-10-2002)
Kommentar
Fra : Mikkel Bundgaard


Dato : 19-10-02 17:09

On Sat, 19 Oct 2002 17:06:08 +0200, David Poulsen wrote:


> "Mikkel Bundgaard" <mikkelbu@teliamail.dk> wrote in message
> news:pan.2002.10.19.09.51.59.320538.2137@teliamail.dk...
>> On Sat, 19 Oct 2002 03:07:28 +0200, David Poulsen wrote:
>> int a = ( int ) Math.floor(b/c);
> problemet er bare at den returnere nul? Og det forstår
> jeg så ikke en skid af.
>
> Nå men ellers tak for svaret.
>
> Mvh
>
> David
Hej David

Hvilken type er b og c og hvilken værdi har de ???

public class JavaFloor {
public static void main( String args[] ) {
double b = 3.5;
double c = 1.5;
int a = ( int ) Math.floor(b/c);
System.out.println( a );
}
}
Giver f.eks. som forventet 2.
--
Mikkel Bundgaard
Student at IT University of Copenhagen
http://officehelp.gone.dk
Codito, Ergo Sum

David Poulsen (19-10-2002)
Kommentar
Fra : David Poulsen


Dato : 19-10-02 23:24


> Hej David
>
> Hvilken type er b og c og hvilken værdi har de ???
>
> public class JavaFloor {
> public static void main( String args[] ) {
> double b = 3.5;
> double c = 1.5;
> int a = ( int ) Math.floor(b/c);
> System.out.println( a );
> }
> }
> Giver f.eks. som forventet 2.
> --
> Mikkel Bundgaard
> Student at IT University of Copenhagen
> http://officehelp.gone.dk
> Codito, Ergo Sum

Davs Mikkel

Hehe jeg er letttere træt må jeg nok indrømme fordi min funktion skulle se
ud som denne:

Eksempel er fra javascript RSA Algorithme og er en simpel udgave af den
"rigtige" algorithme (Euclidean extended algorithme)

function extend(E,PHI) {
u1 = 1
u2 = 0
u3 = PHI
v1 = 0
v2 = 1
v3 = E
while (v3 != 0) {
q = Math.floor(u3/v3)
t1 = u1 - q * v1
t2 = u2 - q * v2
t3 = u3 - q * v3
u1 = v1
u2 = v2
u3 = v3
v1 = t1
v2 = t2
v3 = t3
z = 1

}
uu = u1
vv = u2
if (vv < 0) {
inverse = vv + PHI
} else {
inverse = vv
}
return inverse
}

og den vil jeg jo hurtigt oversætte til at den ser sådan ud

int extend(int E,int PHI)
{
int v1 = 1,v2 = 0,v3 = PHI;
int u1=0,u2=1,u3=E;
int t1,t2,t3;
while(v3 != 0)
{
? Jeg aner ikke hvad den skal være så jeg har bare sagt int q =
Math.floor(u3/v3) her er så problemet for den skal jo Math.floor(int,int) og
det dur vist ikke, hvad kan jeg så gøre??
t1 = u1 - q * v1
t2 = u2 - q * v2
t3 = u3 - q * v3
u1 = v1
u2 = v2
u3 = v3
v1 = t1
v2 = t2
v3 = t3

z = 1

}
int uu = u1
int vv = u2
if (vv < 0) {
inverse = vv + PHI
} else {
inverse = vv
}
return inverse
}

Jeg ved at koden måske har andre fejl end dem jeg har problemer med og det
er til at rette men nu er det jo ret sent og jeg har ikke lyst til at bruge
mere tid til at rette så koden kommer til at se fuldstændig ud som i
programmet men Q = Math.floor(u3/v3) Er nøjagtig resten er sådan som jeg
lige kunne huske i hovedet!

Nå men du må havde en god nat

Mvh

David




Søg
Reklame
Statistik
Spørgsmål : 177500
Tips : 31968
Nyheder : 719565
Indlæg : 6408518
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste