NormalizeDouble not working... long flating numbers issue...
-
Hello everyone, I'm asking for help because of this issue that manifested lately that is getting me crazy.
Since the last update of fxDreema my EA started to show long numbers in the info panel, like 9.140000000000001I searched the forums and tried all the solutions mentioned like using using the function NormalizeDouble() but that only worked with some cases so I could NOT resolve this issue. My variables are in fact of the type double.
I found several references in the forums about fxDreemas' Admin mentioning something about 'strict mode' and the issues related to printing long numbers, we are talking about post from 2015 so this seems and old issue.
I created a shared example to show the problem, even with nomalized doubles this long numbers appear.
Shared project: NormalizeDouble example mt4Any help would be much appreciated!


Related forum posts:
@fxDreema said in self updating/refreshing grid, compare two groups of trades:
Yes, there was some error. As you probably know, I was experimenting with "strict" mode, but with it some problems appeared. Then I disabled it and these errors appeared. Now I fixed those errors, I guess, and currently I disabled this "strict" mode, mostly because of some issues when printing numbers. Are you sure about the restore? Note that when I restore some project, it's only data about when blocks are located and their settings. The actual code that is generated does not come with the project itself.
@fxDreema said in self updating/refreshing grid, compare two groups of trades:
I don't know what to tell you, as I also have troubles with this
Floating numbers are crazy in C/C++, and MQL4 comes from there. NormalizeDouble() is used to cut digits, but sometimes it doesn't work as expected. For displaying data DoubleToString() is used, the input here is a number and the output is string (text).I discovered that in strict mode if I try to get the Equity, which is some floating number, the result can be some number followed by many random numbers. And if I apply NormalizeDouble to the 2nd digit for example, it still does not cut the number to the 2nd number, there is something like 000001 left at the end. Then if I put (double) in front it appears that everything is ok. But the whole thing becomes something like:
(double)(NormalizeDouble(AccountEquity(), 2))... only to cut some floating number to the 2nd digit. And I'm still not sure that the number is actually cut or I am only hiding the truth

This is for strict mode. Currently I disabled it, because... because. With strict mode people are complaining more from weird looking numbers coming out of "Comment"
While in normal mode at least numbers are outputted in the way they should be. -
try change your way of normalizing ... be sure you give it into "Text (code input)" ..

if it is not working in this field, than problem can be in metatrader itself

-
Thank you so much @miro1360 with your help I found a temporary workaround.
I tested:
Value, numeric --------> NormalizeDouble(G2RealTimeProfit,2) ----> same issue
Text (code input) ----> NormalizeDouble(G2RealTimeProfit,2) ----> same issue
Text (code input) ----> DoubleToString(G2RealTimeProfit,2) -------> working
That will only convert the number at the moment of display, we still may need to normalize a variable in memory or that to be automatic. I hope we can find the root of this issue. In my opinion is not MQL but how fxDreema handles numeric datatypes.
Thanks again for your help, any insight is much appreciated
-
perfect, DoubleToString is good function
... I almost forget that one ... -
Hi I got problems with NormalizeDouble. I changed it to DoubleToString but i get the same issue.
Sometimes the value I print on the chart come out with to many desimals. When not it works quite well.
Are this a Fxdreema or mt4 problem?