有可能得到一个 "精确 "的数值吗? - 页 2 1234567 新评论 Alexandr Bryzgalov 2014.10.04 07:34 #11 但这个值 0.099999999将返回0.1) Alexandr Bryzgalov 2014.10.04 07:44 #12 那么上面引用的内容将更适合于TC的任务。void OnStart() { //--- int DIGITS=2; string stroka=DoubleToString(0.099999999,8); int P=StringFind(stroka,"."); Print(stroka); stroka=StringSubstr(stroka,0,P+DIGITS+1); Print(StringToDouble(stroka)); Print(NL(DIGITS,0.099999999)); } //+------------------------------------------------------------------+ double NL (int DIGITS,double value) { double step=1/MathPow(10,DIGITS); return (MathFloor(value/step)*step); }返回。2014.10.04 11:42:31.856 normalize EURUSD,H4: 0.09 2014.10.04 11:42:31.856 normalize EURUSD,H4: 0.1 2014.10.04 11:42:31.856 normalize EURUSD,H4: 0.10000000 [删除] 2014.10.04 07:48 #13 我画出了一个函数,它的作用正是我想做的:精确地将一个字符串截断到指定的精度,与DoubleToStr不同。string Normalize (string Normalize_Parse, int Normalize_Number, string Normalize_Separator = ".") { string Normalize_Before, Normalize_After; for (int i = 0; i <= StringLen (Normalize_Parse) - 1; i ++) { if (StringSubstr (Normalize_Parse, i, StringLen (Normalize_Separator)) == Normalize_Separator) { for (int ii = i + StringLen (Normalize_Separator); ii < i + StringLen (Normalize_Separator) + Normalize_Number; ii ++) { Normalize_After += StringSubstr (Normalize_Parse, ii, 1); } break; } Normalize_Before += StringSubstr (Normalize_Parse, i, 1); } return (Normalize_Before + (Normalize_After > 0 ? Normalize_Separator + Normalize_After : "")); }结果为 "0.09864724"。Comment (Normalize (0.09864724, 2)); // 0.09"0,-843158 " 的结果。Comment (Normalize ("0,-843158", 3, ",-")); // 0,-843与双重和类似的操作。Comment ((double) Normalize (0.09, 2) * 5); // 0.45我一直在搜索,这样的功能已经存在于MQL4(5?)如果不存在,为什么不在很久以前就添加?:) Alexandr Bryzgalov 2014.10.04 07:53 #14 WePlexus:我画出了一个函数,它的作用正是我想做的:精确地将一个字符串截断到指定的精度,与DoubleToStr不同。结果为 "0.09864724"。"0,-843158 " 的结果。与双重和类似的操作。我一直在搜索,这样的功能已经存在于MQL4(5?)如果不存在,为什么不在很久以前就添加?:) 这就是我所说的 "更容易" ) Andrey F. Zelinsky 2014.10.04 07:55 #15 WePlexus:我画出了一个函数,它的作用正是我想做的:精确地将一个字符串截断到指定的精度,与DoubleToStr不同。结果为 "0.09864724"。"0,-843158 " 的结果。与双重和类似的操作。我一直在搜索,这样的功能已经存在于MQL4(5?)如果不存在,为什么不在很久以前就添加?:) 你在用一些奇怪的例子进行操作--这就是为什么不可能得出结论说你的函数工作正确。 以此为例。 如何离开=0.01999999999999999999--离开=0.01 Alexandr Bryzgalov 2014.10.04 07:56 #16 abolk: 你在用角色外的例子进行操作 -- 所以你不能得出结论说你的函数工作正确。 以此为例。 如何离开=0.01999999999999999999--离开=0.01 检查了最后一个函数,它留下了0.01。 Petros Shatakhtsyan 2014.10.04 08:00 #17 我还是不明白你想要什么。如果你想在图表上看到0.098,而不是0.098,那就这么做吧!int a=0.098 * 100。双重d=a/100.0。评论(StringFormat("%G", d )。 Andrey F. Zelinsky 2014.10.04 08:03 #18 sanyooooook: 检查了最后一个函数,留下0.01 检查了你的函数 -- 留下0.02 [删除] 2014.10.04 08:08 #19 abolk: 检查了你的函数 -- 留下0.02。的确,0.02。我的函数可能更繁琐,但它正好切断了0.01。 [删除] 2014.10.04 08:08 #20 sanyooooook: 检查了最后一个函数,留下0.01 如何优化你的函数,从abolk 的例子中取出0.01? 1234567 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
但这个值
0.099999999
将返回0.1
)
那么上面引用的内容将更适合于TC的任务。
返回。
我画出了一个函数,它的作用正是我想做的:精确地将一个字符串截断到指定的精度,与DoubleToStr不同。
结果为 "0.09864724"。
"0,-843158 " 的结果。
与双重和类似的操作。
我一直在搜索,这样的功能已经存在于MQL4(5?)如果不存在,为什么不在很久以前就添加?:)
我画出了一个函数,它的作用正是我想做的:精确地将一个字符串截断到指定的精度,与DoubleToStr不同。
结果为 "0.09864724"。
"0,-843158 " 的结果。
与双重和类似的操作。
我一直在搜索,这样的功能已经存在于MQL4(5?)如果不存在,为什么不在很久以前就添加?:)
我画出了一个函数,它的作用正是我想做的:精确地将一个字符串截断到指定的精度,与DoubleToStr不同。
结果为 "0.09864724"。
"0,-843158 " 的结果。
与双重和类似的操作。
我一直在搜索,这样的功能已经存在于MQL4(5?)如果不存在,为什么不在很久以前就添加?:)
以此为例。
如何离开=0.01999999999999999999--离开=0.01
你在用角色外的例子进行操作 -- 所以你不能得出结论说你的函数工作正确。
以此为例。
如何离开=0.01999999999999999999--离开=0.01
我还是不明白你想要什么。
如果你想在图表上看到0.098,而不是0.098,那就这么做吧!
int a=0.098 * 100。
双重d=a/100.0。
评论(StringFormat("%G", d )。
检查了最后一个函数,留下0.01
检查了你的函数 -- 留下0.02。
的确,0.02。
我的函数可能更繁琐,但它正好切断了0.01。
检查了最后一个函数,留下0.01