![]() |
|
|
#1 |
|
NinjaTrader Product Manager
Join Date: May 2007
Location: Denver, CO
Posts: 17,458
Thanks: 1
Thanked 106 times in 70 posts
|
Some common problems that you may encounter when comparing different double values are the caveats involved with floating-point arithmetic. Because of the way computers store floating-point numbers, under certain conditions your value will be an approximate of the actual decimal number you wanted. If this situation arises in your code, your comparison logic may not execute as you had intended even if your logic was mathematically sound on paper. To address this issue you will need to use a range comparison that takes into account the slight differences in the least significant digits of the floats.
For example, under normal mathematics we would assume double x is equivalent to double y. Code:
double x = 90.10; double y = 100 * 0.9010; Print(“double x: ” + x); Print(“double y: ” + y); Code:
double x = 90.1 double y = 90.1 Code:
bool c = (x == y); Print(“x equals y: ” + c); Code:
x equals y: False Code:
if (x == y)
// Do something. This will never be true.
Code:
if (Math.Abs(x – y) < 0.0001)
// Do something
Alternatively, you can check the difference between the two variables against the double.Epsilon field. double.Epsilon field represents the smallest possible double value. Code:
if (x – y < double.Epsilon)
// Do something
Code:
double newPriceRange = Close[0] – Open[0];
double oldPriceRange = Close[1] – Open[1];
if (Instrument.MasterInstrument.Compare(newPriceRange, oldPriceRange) == 1)
// Do something
For a more formal analysis of floating-point arithmetic, there are many resources online: http://docs.sun.com/source/806-3568/ncg_goldberg.html http://www.codeproject.com/dotnet/Ex...int1.asp#terms
Josh
NinjaTrader Customer Service |
|
|
|
![]() |
| Thread Tools | |
| Display Modes | |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Detect inflection point in MACD.Diff | twas2007 | Strategy Development | 2 | 10-18-2007 12:51 PM |
| Pivot point | sunnyrain | Charting | 1 | 10-12-2007 01:10 PM |
| Pivot Point Mod for Open & Close Times | cutter | Indicator Development | 10 | 09-17-2007 12:17 PM |
| Point Change Charts | SigmaTrader | Suggestions And Feedback | 2 | 07-10-2007 01:15 PM |