|
Try this in VC++
double dValue = 10.52 - 10.0;
Normally dValue should be 0.52 but the result is always: 0.51999999999999957
Why ?????
it cause me a lot of trouble, any idea on how to fix it ?
|
|
|
|
|
because of precision computing.
it's standard "behaviour" when representing floating point numbers in binary.
Maximilien Lincourt
Your Head A Splode - Strong Bad
|
|
|
|
|
Try this using pen and paper. It's called Long Division. Divide the value 1 by the value 3. When you get the exact answer and there is no remainder, please come back.
If you do some Google searching for floating point approximations, you'll probably find your answer. Binary representations of a rational number requires approximations just as base ten representations of rational numbers requires approximations. Most times these approximations are very small and have only a minor or neglible effect on calculations, but as you are probably discovering, there are times that the effect can be appreciable.
Chris Meech
I am Canadian. [heard in a local bar]
Gently arching his fishing rod back he moves the tip forward in a gentle arch releasing the line.... kersplunk [Doug Goulden]
|
|
|
|
|
It's inevitable. It is impossible to represent some real values exactly in floating-point format.
The best way to handle rounding errors like this is to decide what precision is necessary for your application and round values when necessary. Keep the values 'raw' as long as possible and round before displaying the result.
for example:
double round(double val, int ndp)
{
double mult = pow(10, ndp);
val *= mult;
return ((val - floor(val) < 0.5) ? floor(val) : ceil(val)) / mult;
}
...
double dValue = round(10.52 - 10.0, 4);
The opinions expressed in this communication do not necessarily represent those of the author (especially if you find them impolite, discourteous or inflammatory).
|
|
|
|
|
Thanks for your help.
With this simple Round function I was able to fix my problems.
|
|
|
|
|
why don't you just use int? or short int?
IM PROUD TO BE A GMAIL;
|
|
|
|
|
|
What do i need to use this control: click here
Thanks!
|
|
|
|
|
A mouse.
The opinions expressed in this communication do not necessarily represent those of the author (especially if you find them impolite, discourteous or inflammatory).
|
|
|
|
|
|
LOL. When I saw the question, I was wondering about a smartass reply, but could come up with one. Yours is pretty good.
Chris Meech
I am Canadian. [heard in a local bar]
Gently arching his fishing rod back he moves the tip forward in a gentle arch releasing the line.... kersplunk [Doug Goulden]
|
|
|
|
|
You have asked a question that is just so vague, it's impossible to answer. How have you tried to use it, whatever it is.
Chris Meech
I am Canadian. [heard in a local bar]
Gently arching his fishing rod back he moves the tip forward in a gentle arch releasing the line.... kersplunk [Doug Goulden]
|
|
|
|
|
What is the name of that control ? It is available through some MFC class or something ? I want to use that control but don't where to to start.
Thanks
|
|
|
|
|
Try using Spy++. That might help. What applications use it?
Chris Meech
I am Canadian. [heard in a local bar]
Gently arching his fishing rod back he moves the tip forward in a gentle arch releasing the line.... kersplunk [Doug Goulden]
|
|
|
|
|
I've seen it in visual studio, unreal editors and a couple more.
Spy++ gave me this class: WindowsForms10.Window.8.App1
I don't know what the hell is this.
|
|
|
|
|
PutaQuePariu wrote:
I've seen it in visual studio
Since I'm still using version 6, and don't see it, I'll assume it a new beast in 7.
I'm with Max on this one though. From the small pic you linked, it looks like a Tree Control that is ownerdrawn. Which basically means you have to 'reinvent' all that the owner draw implements.
Chris Meech
I am Canadian. [heard in a local bar]
Gently arching his fishing rod back he moves the tip forward in a gentle arch releasing the line.... kersplunk [Doug Goulden]
|
|
|
|
|
|
I've seen it several times in different applications which makes me wonder that it is a standard one... or made by someone and freely distributed.
|
|
|
|
|
If you have seen it that much it is probably part of a frame work or suit of controls that several companies use (like Dundas or Prof-UIS).
It is simplier to buy interface componets the to creat them.
INTP
|
|
|
|
|
dundas offer a control like that in their Ultimate Toolkit package.
Maximilien Lincourt
Your Head A Splode - Strong Bad
|
|
|
|
|
My program is claiming the following runtime error:
Debug Error !<br />
Program : MyProgram.EXE<br />
Module :<br />
File : i386\chkesp.c<br />
Line : 42<br />
The value of ESP was not properly saved across a function call. This is usually a result of calling a function declared with one calling convention with a function pointer declared with a different calling convention.
I can ignore it and things appear OK, but that doesn't solve anything. The message is popping up when I return from my function. The thing is I don't use any function pointers so I'm not sure why I'm getting this. Any other funky reasons this error might show up?
The more frustrating part is haven't made changes to this section of code in months.
Thanks for any leads.
BW
The Biggest Loser
"Farm Donkey makes us laugh. Farm Donkey hauls some ass." -The Stoves
|
|
|
|
|
Check that the way the function is declared is consistent everywhere, in code and header files.
Perhaps one compilation unit sees __cdecl and another sees __stdcall or something.
This can be a mess if the function you're calling is in a static library or a dll.
Needless to say, ignoring the error should not be considered an option.
The opinions expressed in this communication do not necessarily represent those of the author (especially if you find them impolite, discourteous or inflammatory).
|
|
|
|
|
Looks like a macro or typedef has changed and you have not recompiled the function being called with the new declaration. This typically occurs if you have a function defined as pascal calling convention, compile it, change the definition to cdecl and don't recompile the function (or vice-versa).
onwards and upwards...
|
|
|
|
|
Or, your function is corrupting the stack.
onwards and upwards...
|
|
|
|
|
i want to Change text color of items of list control.Only text color of selected item is to be changed.
|
|
|
|