|
You last visited: Today at 22:33
Advertisement
float zu int, was macht der Code?
Discussion on float zu int, was macht der Code? within the C/C++ forum part of the Coders Den category.
08/18/2014, 20:58
|
#1
|
elite*gold: 0
Join Date: Jan 2012
Posts: 759
Received Thanks: 416
|
float zu int, was macht der Code?
Hi,
was ist der Unterschied zwischen diesem Code (value ist vom Typ float):
Code:
int FloatConstNode::intValue(){
float flt=value;
int temp;
_control87( _RC_NEAR|_PC_24|_EM_INVALID|_EM_ZERODIVIDE|_EM_OVERFLOW|_EM_UNDERFLOW|_EM_INEXACT|_EM_DENORMAL,0xfffff );
_asm{
fld [flt];
fistp [temp];
}
_control87( _CW_DEFAULT,0xfffff );
return temp;
}
(von hier:  )
und einem einfachen
Code:
return (int) value;
Was macht die Funktion genau / besonderes?
|
|
|
08/19/2014, 00:02
|
#2
|
elite*gold: 724
Join Date: Mar 2011
Posts: 10,479
Received Thanks: 3,318
|
Die asm-Instruktionen laden flt auf den FPU Stack & speichern das oberste Element des FPU Stacks als Integer in temp.
_control87 setzt, soweit ich das verstanden habe, die Optionen für die FPU-Operationen, _EM_* steht dabei für Exceptions (Exception bei division by zero etc.), _PC_* für die Präzision und _RC_* für die Rundungsoptionen.
Der größte Unterschied dürfte der sein, dass (int)value wohl _RC_CHOP als Option verwendet, während _RC_NEAR auf- bzw. abrundet, je nachdem, ob der Float-Value > oder < .5 ist.
3.6 würde bei der ersten Methode also wohl 4 returnen, bei der zweiten Methode 3.
|
|
|
08/19/2014, 12:15
|
#3
|
elite*gold: 55
Join Date: Mar 2006
Posts: 4,582
Received Thanks: 1,539
|
geht nicht auch einfach
Code:
float Num = 1.325;
float Num_ = 1.525;
int iNum = 0;
int iNum_ = 0;
iNum = static_cast<int>(Num + 0.5);
iNum_ = static_cast<int>(Num_ + 0.5);
also
Code:
int ConvertFloatToInt(float Number)
{
return static_cast<int>(Number + 0.5);
}
|
|
|
08/19/2014, 13:56
|
#4
|
elite*gold: 58
Join Date: Jun 2008
Posts: 2,311
Received Thanks: 8,420
|
Oder einfach std::ceil/std::floor?
Padmak
|
|
|
08/29/2014, 03:32
|
#5
|
elite*gold: 99
Join Date: Apr 2011
Posts: 730
Received Thanks: 236
|
Quote:
Originally Posted by bloodx
geht nicht auch einfach
Code:
float Num = 1.325;
float Num_ = 1.525;
int iNum = 0;
int iNum_ = 0;
iNum = static_cast<int>(Num + 0.5);
iNum_ = static_cast<int>(Num_ + 0.5);
also
Code:
int ConvertFloatToInt(float Number)
{
return static_cast<int>(Number + 0.5);
}
|
Wenn ich mich nicht täusche wird bei so einem cast immer runtergerundet, war aber schon ein Jahr her, dass ich das das letzte mal gebraucht habe / es von Bedeutung für mich war ~~
|
|
|
08/29/2014, 11:09
|
#6
|
elite*gold: 724
Join Date: Mar 2011
Posts: 10,479
Received Thanks: 3,318
|
Quote:
Originally Posted by Hiris
Wenn ich mich nicht täusche wird bei so einem cast immer runtergerundet, war aber schon ein Jahr her, dass ich das das letzte mal gebraucht habe / es von Bedeutung für mich war ~~
|
deshalb hat er auch den Wert + 0.5 gecastet, damit z.B. 0.5 korrekt auf 1 aufgerundet wird, 0.49 aber eine 0 wird.
|
|
|
08/29/2014, 15:22
|
#7
|
elite*gold: 99
Join Date: Apr 2011
Posts: 730
Received Thanks: 236
|
Quote:
Originally Posted by snow
deshalb hat er auch den Wert + 0.5 gecastet, damit z.B. 0.5 korrekt auf 1 aufgerundet wird, 0.49 aber eine 0 wird.
|
Ach lol, da hatte ich wohl gestern Abend nen totalen brainlag
Ja passt natürlich
|
|
|
 |
Similar Threads
|
[Buying] [S] Xbox Live Gold Code [B] Macht Vorschläge
05/21/2013 - Consoles Trading - 3 Replies
Titel Sagt alles :$
|
[B] 20% Origin rabatt Code [S] Macht mir nen angebot
11/23/2011 - elite*gold Trading - 0 Replies
Wie schon gesagt habe einen Origin 20% Rabatt code der allerdings nicht für Vorbestellungen gilt ist noch bis zum 23.12.11 gültig.
|
[Frage]Gm Code Wie macht Mann sich Schneller?
04/04/2010 - Metin2 Private Server - 12 Replies
Also Ich Bin Noch Neu Und Hätte Eine Frage
Wie macht mann sich schneller wenn man gm is ich hab in einen sammeltheread den code gefund Laufgeschwindigkeit erhöhen = /mspd 0 - 1000
Klappt aber nich recht (befehl nich gefunden) Wenn mir einer den fertigen code sagen könnte wäre dankbar und ihr bekommt nen THX...
Hoffe Auf Eine Schnelle Antwort ..
Thx Lg euer Blodyice:D
|
Captcha Code pls macht mir wer den!
05/03/2009 - Metin2 Private Server - 8 Replies
wen einer so net wäre und mie den Captcha Code
mahen würde würde dem jenigen ein thx geben pls!
http://img15.imageshack.us/img15/9287/getcode2.jp g
mfg jacker455!:o
|
All times are GMT +1. The time now is 22:34.
|
|