float x = 1.33333333333333 why does it equal 1?
Hi, I have made a float like so
float x = 400/300
400/300 = 1.333333333333333333333333333333333
When i find out what value x is like so
this.text = x.tostring();
text = 1 for some reason
Do recurring numbers get rounded off
if so, how can i keep it so x = 1.3333?
Thanks for any info
because you are doing an integer division.
That will do what you want.
float x = (float)400/300
That will do what you want.
If both numbers on either side of a division are integers a ‘integer division’ is performed. This is basicly a division that is trunctuated to an integer (for the sake of speed). To solve this you can cast the values as floats or doubles.
Example:
Floats:
400.0f / 300.0f
Floats:
( float ) 400 / (float ) 300
Doubles:
400.0 / 300.0
Hope this helps,
Jackson Allan
Example:
Floats:
400.0f / 300.0f
Floats:
( float ) 400 / (float ) 300
Doubles:
400.0 / 300.0
Hope this helps,
Jackson Allan
Quote:Original post by Xetrov
because you are doing an integer division.float x = (float)400/300
Casting literals is strange. Why not this?
float x = 400.0f / 300.0f
Quote:
Casting literals is strange. Why not this?float x = 400.0f / 300.0f
Fair enough, but that doesnt exactly work when you want to use variables instead ;)
Quote:Original post by Xetrov
Fair enough, but that doesnt exactly work when you want to use variables instead ;)
(Kicking the man while he's down.)
C casts are evil (unless you're programimng in pure C).
Prefer static_cast<float>(a)/b.
That way it is obvious what the cast is applied to.
(does the cast in (float)a/b apply to a or to a/b ?)
[wink]
Quote:Original post by Fruny
Prefer static_cast<float>(a)/b.
That way it is obvious what the cast is applied to.
(does the cast in (float)a/b apply to a or to a/b ?)
Although C-casts are ugly, I usually find this nice:
float(a)/b
That's not a C cast, you're creating a temporary float from a. I guess in the end it's exactly the same, but I'm going to say they're different, so har!
Quote:Original post by dalleboyQuote:Original post by Fruny
Prefer static_cast<float>(a)/b.
That way it is obvious what the cast is applied to.
(does the cast in (float)a/b apply to a or to a/b ?)
Although C-casts are ugly, I usually find this nice:
float(a)/b
float x = (float)(a/b) is the way I did
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement