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