Missa inte Amazon Prime Day i Dagens fynd

Hur kolla om sqrt resultat är ett heltal?

Permalänk
Medlem

Hur kolla om sqrt resultat är ett heltal?

Jag tar ut ett nummer med hjälp av sqrt men vill bara ha resultatet till en variabel om det är ett heltal och ignorerat annars. Hur åstadkommer man detta på enklast sätt?

Permalänk
Medlem

Börja med att berätta vilket språk det handlar om.

Visa signatur

The power of GNU compiles you!
"Often statistics are used as a drunken man uses lampposts -- for support rather than illumination."

Permalänk
Medlem
Permalänk
Medlem

if(tal % 1 == 0) { // heltal... }

Notera att detta kan bli knasigt lite beroende på vilket språk du kör. Är det Java t.ex. och du enbart använder ints så kommer den att avrunda din sqrt() till närmaste int, och då kommer uttrycket i if-satsen ovan alltid att vara sant. Så se till att ditt värde har rätt datatyp, och då kan du behöva göra såhär istället:

if(tal % 1.0 == 0.0) { // heltal... }

Snartlikt, men med den skillnaden att den använder flyttal istället för heltal.

Permalänk
Avstängd

Eller nåt i stil med

if (x - int(x) == 0)

eller

if (x - round(x) == 0)

kanske?

EDIT: snyggare med
if( x == int(x))

Permalänk
Medlem

int n = sqrt(x);
if( (n*n) == x ) {
/* square root is a integer */
}

Permalänk
Medlem

Nu fick jag det att funka. Tack för alla tipsen.

Permalänk
Medlem

x = sqrt(n) if (x == floor(x)) { Yes }

Bör fungera, i någon språk så kan man få typfel och måste därför ta hand om det.

Citat:

Ursprungligen inskrivet av MagnusL
int n = sqrt(x);
if( (n*n) == x ) {
/* square root is a integer */
}

Jag ser inte hur denna lösningen kan fungera. En möjlig definition av kvadratroten (a) av ett tal (b) är just att a * a = b, och det stämmer även om roten är ett heltal eller inte.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av nystan

x = sqrt(n) if (x == floor(x)) { Yes }

Bör fungera, i någon språk så kan man få typfel och måste därför ta hand om det.

Jag ser inte hur denna lösningen kan fungera. En möjlig definition av kvadratroten (a) av ett tal (b) är just att a * a = b, och det stämmer även om roten är ett heltal eller inte.

http://sv.wikipedia.org/wiki/Trunkering

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av MagnusL
http://sv.wikipedia.org/wiki/Trunkering

Jag missade visst en del av ditt program när jag snabbt läste igenom det! Självklart fungerar det.