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

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
float til int
Fra : Morten Nørgaard


Dato : 06-02-01 13:51

Problem;

hvordan konverterer jeg en float til en oprundet int?

PFT.





 
 
Lars Dam (06-02-2001)
Kommentar
Fra : Lars Dam


Dato : 06-02-01 14:00

On Tue, 06 Feb 2001 12:51:24 GMT, "Morten Nørgaard"
<martinnorgard@mail.tele.dk> wrote:

>Problem;
>
>hvordan konverterer jeg en float til en oprundet int?

float fl = 12.34f;


int y = (int)(fl+0.5f);

>PFT.

vh. ld
--
"Time is the fire in which we burn"

Troels Thomsen (07-02-2001)
Kommentar
Fra : Troels Thomsen


Dato : 07-02-01 09:21

> >
> >hvordan konverterer jeg en float til en oprundet int?
>
> float fl = 12.34f;
> int y = (int)(fl+0.5f);

Når han skriver oprunding ville jeg tro det skulle give 13. Dvs ikke en
afrunding.

tpt



Lars Dam (07-02-2001)
Kommentar
Fra : Lars Dam


Dato : 07-02-01 09:50

On Wed, 7 Feb 2001 09:20:31 +0100, "Troels Thomsen" <tpilt@usa.net>
wrote:

>> >
>> >hvordan konverterer jeg en float til en oprundet int?
>>
>> float fl = 12.34f;
>> int y = (int)(fl+0.5f);
>
>Når han skriver oprunding ville jeg tro det skulle give 13. Dvs ikke en
>afrunding.

Sorry læste det som en afrunding, men hvis manden er smart, så kan han
vel se mekanikken i det, og erstatte 0.5f med 1.0f. :-/

>
>tpt
>

vh. ld
--
"Time is the fire in which we burn"

Igor V. Rafienko (07-02-2001)
Kommentar
Fra : Igor V. Rafienko


Dato : 07-02-01 13:08

* Lars Dam

[snip]

> >Når han skriver oprunding ville jeg tro det skulle give 13. Dvs
> >ikke en afrunding.
>
> Sorry læste det som en afrunding, men hvis manden er smart, så kan
> han vel se mekanikken i det, og erstatte 0.5f med 1.0f. :-/


float fl = -12.34f;
int y = (int)(fl + 1.0f);

Dette gir oss at "-13.34" skal typecastes til int. Hva tror du
resultatet av det blir, hvor portabelt er det, og hva tror du
std::numeric_limits<int>::float_round_style brukes til?





ivr
--
Besides, meat tends to run away when possible, or fights. Either
response presents behavioral challenges too complex for any existing
robot.
      -- Stuart Wilkinson, inventor of the "gastrobot"

Sune (28-02-2001)
Kommentar
Fra : Sune


Dato : 28-02-01 11:01


"Lars Dam" <lars_simple_spam_protection_dam@post2.tele.dk> wrote in message
news:a0328tg4q4tdf7d04f3qto1r0miok0pmrs@4ax.com...
> On Wed, 7 Feb 2001 09:20:31 +0100, "Troels Thomsen" <tpilt@usa.net>
> wrote:
>
> >> >
> >> >hvordan konverterer jeg en float til en oprundet int?
> >>
> >> float fl = 12.34f;
> >> int y = (int)(fl+0.5f);
> >
> >Når han skriver oprunding ville jeg tro det skulle give 13. Dvs ikke en
> >afrunding.
>
> Sorry læste det som en afrunding, men hvis manden er smart, så kan han
> vel se mekanikken i det, og erstatte 0.5f med 1.0f. :-/
>

Hvad så med

float fl = 12.00f;
int y = (int)(fl+1.0f);

(y=13 og ikke 12)

Løsningen må være brugen af
double ceil( double x );


-Sune





Christian Worm Morte~ (06-02-2001)
Kommentar
Fra : Christian Worm Morte~


Dato : 06-02-01 19:07

Hej,

> hvordan konverterer jeg en float til en oprundet int?

Hvis f er en float:

(int)((f==((float)((int)f))) ? f : (f+1.0))

Fjern selv redundante parenteser.

Der er muligvis pænere og bedre måder at gøre det på, men det er jeg ikke
nok inde i IEEE standard flydendetals aritmitik til at kunne sige noget
fornuftigt om.


Venlig Hilsen

Christian Worm



Richard Flamsholt (06-02-2001)
Kommentar
Fra : Richard Flamsholt


Dato : 06-02-01 21:53

"Morten Nørgaard" <martinnorgard@mail.tele.dk> skrev:
>hvordan konverterer jeg en float til en oprundet int?

I <math.h> finder du funktionen ceil():

float f = 1.234;
int x = (int)ceil(f);

Løsningen forudsætter naturligvis - som alle andre løsninger - at den
oprundede værdi kan repræsenteres i en int.

--
Richard Flamsholt
richard@flamsholt.dk - www.richard.flamsholt.dk

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

Månedens bedste
Årets bedste
Sidste års bedste