在MT4中通过NormalizeDouble对数字进行四舍五入 - 页 9 1234567891011121314151617 新评论 Lilita Bogachkova 2016.02.25 20:48 #81 Алексей Тарабанов: 关于四舍五入的八页。我想我们以前在四年级的时候就学过这个。 已经有一些关于割礼的讨论了 :) Vladimir Suslov 2016.02.25 20:49 #82 Алексей Тарабанов: 关于四舍五入的八页。我想我们以前在四年级的时候就学过这个。 不是所有的人;| [删除] 2016.02.25 20:55 #83 Dmitry Fedoseev: 呵。那是错误的方式。完全错误的结果。 像什么? [删除] 2016.02.25 20:57 #84 lilita bogachkova:+++然而,如果一个数字超过了小数点后15位,仍然需要以某种方式进行修剪,否则就不能正常工作。双精度浮点数字精确到小数点后15-17位 Lilita Bogachkova 2016.02.25 21:01 #85 Vasyl Nosal:双精度浮点数字精确到小数点后15-17位//+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { ushort Characters_delete=14; for(int i=0;i<=Characters_delete;i++) { double v1=1.123456789012345; v1=DoubleCrop(v1,i,Characters_delete); Print("v1 = ",i," = ",DoubleToString(v1,Characters_delete-i)); } Print("---"); } //+------------------------------------------------------------------+ //| Double Crop function | //+------------------------------------------------------------------+ double DoubleCrop(double value,int ii,ushort Characters) { string data="",resoult=""; data=DoubleToString(value,Characters); resoult=StringSubstr(data,0,StringLen(data)-ii); return StringToDouble(resoult); } //+------------------------------------------------------------------+0 21:59:20.485 ! 测试 GBPUSDbc,H1: v1 = 0 = 1.123456789012350 21:59:20.485 ! 测试 GBPUSDbc,H1: v1 = 1 = 1.12345678901230 21:59:20.485 ! 测试 GBPUSDbc,H1: v1 = 2 = 1.1234567890120 21:59:20.485 ! 测试 GBPUSDbc,H1: v1 = 3 = 1.123456789010 21:59:20.485 ! 测试 GBPUSDbc,H1: v1 = 4 = 1.12345678900 21:59:20.485 ! 测试 GBPUSDbc,H1: v1 = 5 = 1.1234567890 21:59:20.485 ! 测试 GBPUSDbc,H1: v1 = 6 = 1.123456780 21:59:20.485 ! 测试 GBPUSDbc,H1: v1 = 7 = 1.12345670 21:59:20.485 ! 测试 GBPUSDbc,H1: v1 = 8 = 1.1234560 21:59:20.485 ! 测试 GBPUSDbc,H1: v1 = 9 = 1.123450 21:59:20.485 ! 测试 GBPUSDbc,H1: v1 = 10 = 1.12340 21:59:20.485 ! 测试 GBPUSDbc,H1: v1 = 11 = 1.1230 21:59:20.485 ! 测试 GBPUSDbc,H1: v1 = 12 = 1.120 21:59:20.485 ! 测试 GBPUSDbc,H1: v1 = 13 = 1.10 21:59:20.485 ! 测试 GBPUSDbc,H1: v1 = 14 = 1 ushort Characters_delete=15;0 22:01:25.346 ! 测试 GBPUSDbc,H1: v1 = 0 = 1.1234567890123450 22:01:25.346 ! 测试 GBPUSDbc,H1: v1 = 1 = 1.123456789012340 22:01:25.346 ! 测试 GBPUSDbc,H1: v1 = 2 = 1.12345678901230 22:01:25.346 ! 测试 GBPUSDbc,H1: v1 = 3 = 1.1234567890120 22:01:25.346 ! 测试 GBPUSDbc,H1: v1 = 4 = 1.123456789010 22:01:25.346 ! 测试 GBPUSDbc,H1: v1 = 5 = 1.12345678900 22:01:25.346 ! 测试 GBPUSDbc,H1: v1 = 6 = 1.1234567890 22:01:25.346 ! 测试 GBPUSDbc,H1: v1 = 7 = 1.123456780 22:01:25.346 ! 测试 GBPUSDbc,H1: v1 = 8 = 1.12345670 22:01:25.346 ! 测试 GBPUSDbc,H1: v1 = 9 = 1.1234560 22:01:25.346 ! 测试 GBPUSDbc,H1: v1 = 10 = 1.123450 22:01:25.346 ! 测试 GBPUSDbc,H1: v1 = 11 = 1.12340 22:01:25.346 ! 测试 GBPUSDbc,H1: v1 = 12 = 1.1230 22:01:25.346 ! 测试 GBPUSDbc,H1: v1 = 13 = 1.120 22:01:25.346 ! 测试 GBPUSDbc,H1: v1 = 14 = 1.10 22:01:25.346 ! 测试 GBPUSDbc,H1: v1 = 15 = 1 ushort Characters_delete=15; for(int i=0;i<=Characters_delete;i++) { double v1=1.1234567890123456; v1=DoubleCrop(v1,i,Characters_delete); Print("v1 = ",i," = ",DoubleToString(v1,Characters_delete-i)); } Print("---"); }0 22:02:48.826 ! 测试 GBPUSDbc,H1: v1 = 0 = 1.1234567890123460 22:02:48.826 ! 测试 GBPUSDbc,H1: v1 = 1 = 1.123456789012340 22:02:48.826 ! 测试 GBPUSDbc,H1: v1 = 2 = 1.12345678901230 22:02:48.826 ! 测试 GBPUSDbc,H1: v1 = 3 = 1.1234567890120 22:02:48.826 ! 测试 GBPUSDbc,H1: v1 = 4 = 1.123456789010 22:02:48.826 ! 测试 GBPUSDbc,H1: v1 = 5 = 1.12345678900 22:02:48.826 ! 测试 GBPUSDbc,H1: v1 = 6 = 1.1234567890 22:02:48.826 ! 测试 GBPUSDbc,H1: v1 = 7 = 1.123456780 22:02:48.826 ! 测试 GBPUSDbc,H1: v1 = 8 = 1.12345670 22:02:48.826 ! 测试 GBPUSDbc,H1: v1 = 9 = 1.1234560 22:02:48.826 ! 测试 GBPUSDbc,H1: v1 = 10 = 1.123450 22:02:48.826 ! 测试 GBPUSDbc,H1: v1 = 11 = 1.12340 22:02:48.826 ! 测试 GBPUSDbc,H1: v1 = 12 = 1.1230 22:02:48.826 ! 测试 GBPUSDbc,H1: v1 = 13 = 1.120 22:02:48.826 ! 测试 GBPUSDbc,H1: v1 = 14 = 1.10 22:02:48.826 ! 测试 GBPUSDbc,H1: v1 = 15 = 1 Rounding numbers in MT4 [存档!]纯数学、物理学、化学等:与贸易没有任何关系的大脑训练问题 [Archive!] Pure mathematics, physics, [删除] 2016.02.25 21:03 #86 lilita bogachkova:0 21:59:20.485 ! 测试 GBPUSDbc,H1: v1 = 0 = 1.123456789012350 21:59:20.485 ! 测试 GBPUSDbc,H1: v1 = 1 = 1.12345678901230 21:59:20.485 ! 测试 GBPUSDbc,H1: v1 = 2 = 1.1234567890120 21:59:20.485 ! 测试 GBPUSDbc,H1: v1 = 3 = 1.123456789010 21:59:20.485 ! 测试 GBPUSDbc,H1: v1 = 4 = 1.12345678900 21:59:20.485 ! 测试 GBPUSDbc,H1: v1 = 5 = 1.1234567890 21:59:20.485 ! 测试 GBPUSDbc,H1: v1 = 6 = 1.123456780 21:59:20.485 ! 测试 GBPUSDbc,H1: v1 = 7 = 1.12345670 21:59:20.485 ! 测试 GBPUSDbc,H1: v1 = 8 = 1.1234560 21:59:20.485 ! 测试 GBPUSDbc,H1: v1 = 9 = 1.123450 21:59:20.485 ! 测试 GBPUSDbc,H1: v1 = 10 = 1.12340 21:59:20.485 ! 测试 GBPUSDbc,H1: v1 = 11 = 1.1230 21:59:20.485 ! 测试 GBPUSDbc,H1: v1 = 12 = 1.120 21:59:20.485 ! 测试 GBPUSDbc,H1: v1 = 13 = 1.10 21:59:20.485 ! 测试 GBPUSDbc,H1: v1 = 14 = 10 22:01:25.346 ! 测试 GBPUSDbc,H1: v1 = 0 = 1.1234567890123450 22:01:25.346 ! 测试 GBPUSDbc,H1: v1 = 1 = 1.123456789012340 22:01:25.346 ! 测试 GBPUSDbc,H1: v1 = 2 = 1.12345678901230 22:01:25.346 ! 测试 GBPUSDbc,H1: v1 = 3 = 1.1234567890120 22:01:25.346 ! 测试 GBPUSDbc,H1: v1 = 4 = 1.123456789010 22:01:25.346 ! 测试 GBPUSDbc,H1: v1 = 5 = 1.12345678900 22:01:25.346 ! 测试 GBPUSDbc,H1: v1 = 6 = 1.1234567890 22:01:25.346 ! 测试 GBPUSDbc,H1: v1 = 7 = 1.123456780 22:01:25.346 ! 测试 GBPUSDbc,H1: v1 = 8 = 1.12345670 22:01:25.346 ! 测试 GBPUSDbc,H1: v1 = 9 = 1.1234560 22:01:25.346 ! 测试 GBPUSDbc,H1: v1 = 10 = 1.123450 22:01:25.346 ! 测试 GBPUSDbc,H1: v1 = 11 = 1.12340 22:01:25.346 ! 测试 GBPUSDbc,H1: v1 = 12 = 1.1230 22:01:25.346 ! 测试 GBPUSDbc,H1: v1 = 13 = 1.120 22:01:25.346 ! 测试 GBPUSDbc,H1: v1 = 14 = 1.10 22:01:25.346 ! 测试 GBPUSDbc,H1: v1 = 15 = 1 И? [删除] 2016.02.25 21:09 #87 Vasyl Nosal: И?string data=DoubleToString(1.123456789012345,15); int lenth=StringLen(data); data=StringSubstr(data,0,lenth); Alert(data);2016.02.25 22:06:56.781 prob EURUSD,H1:Alert: 1.123456789012345我已经打了折扣,不超过17个字符的配音。你还需要什么? Алексей Тарабанов 2016.02.25 21:12 #88 lilita bogachkova: 这里已经有一些关于割礼的讨论了 :) 1980年代初,毕业于诺金斯克编程学校的Antonina Loseva在我指导下工作。下面是她解决四舍五入问题的方法:int A = double B + 0.5 Dmitry Fedoseev 2016.02.25 21:16 #89 Vasyl Nosal: 比如说?DoubleToStr(0.9999,3)=1.000因此,请得出你的结论。 Lilita Bogachkova 2016.02.25 21:17 #90 Vasyl Nosal:2016.02.25 22:06:56.781 prob EURUSD,H1: Alert: 1.123456789012345我已经打了折扣,不超过17个字符的配音。你还需要什么?尝试14个,并解释为什么void OnStart() { ushort Characters_delete=14; for(int i=0;i<=Characters_delete;i++) { double v1=1.0/1.1; v1=DoubleCrop(v1,i,Characters_delete); Print("v1 = ",i," = ",DoubleToString(v1,Characters_delete-i)); } Print("---"); }0 22:15:05.379 ! 测试 GBPUSDbc,H1: v1 = 0 = 0.909090910 22:15:05.379 ! 测试 GBPUSDbc,H1: v1 = 1 = 0.9090909 !0 22:15:05.379 ! 测试 GBPUSDbc,H1: v1 = 2 = 0.90909090900 22:15:05.379 ! 测试 GBPUSDbc,H1: v1 = 3 = 0.90909090 22:15:05.379 ! 测试 GBPUSDbc,H1: v1 = 4 = 0.909090900 22:15:05.379 ! 测试 GBPUSDbc,H1: v1 = 5 = 0.90909090 22:15:05.379 ! 测试 GBPUSDbc,H1: v1 = 6 = 0.909090900 22:15:05.379 ! 测试 GBPUSDbc,H1: v1 = 7 = 0.909090 22:15:05.379 ! 测试 GBPUSDbc,H1: v1 = 8 = 0.9090900 22:15:05.379 ! 测试 GBPUSDbc,H1: v1 = 9 = 0.909090 22:15:05.379 ! 测试 GBPUSDbc,H1: v1 = 10 = 0.90900 22:15:05.379 ! 测试 GBPUSDbc,H1: v1 = 11 = 0.9090 22:15:05.379 ! 测试 GBPUSDbc,H1: v1 = 12 = 0.900 22:15:05.379 ! 测试 GBPUSDbc,H1: v1 = 13 = 0.90 22:15:05.379 ! 测试 GBPUSDbc,H1: v1 = 14 = 0 Rounding numbers in MT4 [存档!]纯数学、物理学、化学等:与贸易没有任何关系的大脑训练问题 [Archive!] Pure mathematics, physics, 1234567891011121314151617 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
关于四舍五入的八页。我想我们以前在四年级的时候就学过这个。
关于四舍五入的八页。我想我们以前在四年级的时候就学过这个。
呵。那是错误的方式。完全错误的结果。
+++
然而,如果一个数字超过了小数点后15位,仍然需要以某种方式进行修剪,否则就不能正常工作。
双精度浮点数字精确到小数点后15-17位
0 21:59:20.485 ! 测试 GBPUSDbc,H1: v1 = 14 = 1
0 22:01:25.346 ! 测试 GBPUSDbc,H1: v1 = 0 = 1.123456789012345
0 22:01:25.346 ! 测试 GBPUSDbc,H1: v1 = 1 = 1.12345678901234
0 22:01:25.346 ! 测试 GBPUSDbc,H1: v1 = 2 = 1.1234567890123
0 22:01:25.346 ! 测试 GBPUSDbc,H1: v1 = 3 = 1.123456789012
0 22:01:25.346 ! 测试 GBPUSDbc,H1: v1 = 4 = 1.12345678901
0 22:01:25.346 ! 测试 GBPUSDbc,H1: v1 = 5 = 1.1234567890
0 22:01:25.346 ! 测试 GBPUSDbc,H1: v1 = 6 = 1.123456789
0 22:01:25.346 ! 测试 GBPUSDbc,H1: v1 = 7 = 1.12345678
0 22:01:25.346 ! 测试 GBPUSDbc,H1: v1 = 8 = 1.1234567
0 22:01:25.346 ! 测试 GBPUSDbc,H1: v1 = 9 = 1.123456
0 22:01:25.346 ! 测试 GBPUSDbc,H1: v1 = 10 = 1.12345
0 22:01:25.346 ! 测试 GBPUSDbc,H1: v1 = 11 = 1.1234
0 22:01:25.346 ! 测试 GBPUSDbc,H1: v1 = 12 = 1.123
0 22:01:25.346 ! 测试 GBPUSDbc,H1: v1 = 13 = 1.12
0 22:01:25.346 ! 测试 GBPUSDbc,H1: v1 = 14 = 1.1
0 22:01:25.346 ! 测试 GBPUSDbc,H1: v1 = 15 = 1
0 22:02:48.826 ! 测试 GBPUSDbc,H1: v1 = 0 = 1.123456789012346
0 22:02:48.826 ! 测试 GBPUSDbc,H1: v1 = 1 = 1.12345678901234
0 22:02:48.826 ! 测试 GBPUSDbc,H1: v1 = 2 = 1.1234567890123
0 22:02:48.826 ! 测试 GBPUSDbc,H1: v1 = 3 = 1.123456789012
0 22:02:48.826 ! 测试 GBPUSDbc,H1: v1 = 4 = 1.12345678901
0 22:02:48.826 ! 测试 GBPUSDbc,H1: v1 = 5 = 1.1234567890
0 22:02:48.826 ! 测试 GBPUSDbc,H1: v1 = 6 = 1.123456789
0 22:02:48.826 ! 测试 GBPUSDbc,H1: v1 = 7 = 1.12345678
0 22:02:48.826 ! 测试 GBPUSDbc,H1: v1 = 8 = 1.1234567
0 22:02:48.826 ! 测试 GBPUSDbc,H1: v1 = 9 = 1.123456
0 22:02:48.826 ! 测试 GBPUSDbc,H1: v1 = 10 = 1.12345
0 22:02:48.826 ! 测试 GBPUSDbc,H1: v1 = 11 = 1.1234
0 22:02:48.826 ! 测试 GBPUSDbc,H1: v1 = 12 = 1.123
0 22:02:48.826 ! 测试 GBPUSDbc,H1: v1 = 13 = 1.12
0 22:02:48.826 ! 测试 GBPUSDbc,H1: v1 = 14 = 1.1
0 22:02:48.826 ! 测试 GBPUSDbc,H1: v1 = 15 = 1
0 21:59:20.485 ! 测试 GBPUSDbc,H1: v1 = 14 = 1
0 22:01:25.346 ! 测试 GBPUSDbc,H1: v1 = 0 = 1.123456789012345
0 22:01:25.346 ! 测试 GBPUSDbc,H1: v1 = 1 = 1.12345678901234
0 22:01:25.346 ! 测试 GBPUSDbc,H1: v1 = 2 = 1.1234567890123
0 22:01:25.346 ! 测试 GBPUSDbc,H1: v1 = 3 = 1.123456789012
0 22:01:25.346 ! 测试 GBPUSDbc,H1: v1 = 4 = 1.12345678901
0 22:01:25.346 ! 测试 GBPUSDbc,H1: v1 = 5 = 1.1234567890
0 22:01:25.346 ! 测试 GBPUSDbc,H1: v1 = 6 = 1.123456789
0 22:01:25.346 ! 测试 GBPUSDbc,H1: v1 = 7 = 1.12345678
0 22:01:25.346 ! 测试 GBPUSDbc,H1: v1 = 8 = 1.1234567
0 22:01:25.346 ! 测试 GBPUSDbc,H1: v1 = 9 = 1.123456
0 22:01:25.346 ! 测试 GBPUSDbc,H1: v1 = 10 = 1.12345
0 22:01:25.346 ! 测试 GBPUSDbc,H1: v1 = 11 = 1.1234
0 22:01:25.346 ! 测试 GBPUSDbc,H1: v1 = 12 = 1.123
0 22:01:25.346 ! 测试 GBPUSDbc,H1: v1 = 13 = 1.12
0 22:01:25.346 ! 测试 GBPUSDbc,H1: v1 = 14 = 1.1
0 22:01:25.346 ! 测试 GBPUSDbc,H1: v1 = 15 = 1
И?
2016.02.25 22:06:56.781 prob EURUSD,H1:Alert: 1.123456789012345
我已经打了折扣,不超过17个字符的配音。你还需要什么?
这里已经有一些关于割礼的讨论了 :)
比如说?
DoubleToStr(0.9999,3)=1.000
因此,请得出你的结论。
2016.02.25 22:06:56.781 prob EURUSD,H1: Alert: 1.123456789012345
我已经打了折扣,不超过17个字符的配音。你还需要什么?
尝试14个,并解释为什么
0 22:15:05.379 ! 测试 GBPUSDbc,H1: v1 = 0 = 0.90909091
0 22:15:05.379 ! 测试 GBPUSDbc,H1: v1 = 1 = 0.9090909 !
0 22:15:05.379 ! 测试 GBPUSDbc,H1: v1 = 2 = 0.9090909090
0 22:15:05.379 ! 测试 GBPUSDbc,H1: v1 = 3 = 0.9090909
0 22:15:05.379 ! 测试 GBPUSDbc,H1: v1 = 4 = 0.90909090
0 22:15:05.379 ! 测试 GBPUSDbc,H1: v1 = 5 = 0.9090909
0 22:15:05.379 ! 测试 GBPUSDbc,H1: v1 = 6 = 0.90909090
0 22:15:05.379 ! 测试 GBPUSDbc,H1: v1 = 7 = 0.90909
0 22:15:05.379 ! 测试 GBPUSDbc,H1: v1 = 8 = 0.909090
0 22:15:05.379 ! 测试 GBPUSDbc,H1: v1 = 9 = 0.90909
0 22:15:05.379 ! 测试 GBPUSDbc,H1: v1 = 10 = 0.9090
0 22:15:05.379 ! 测试 GBPUSDbc,H1: v1 = 11 = 0.909
0 22:15:05.379 ! 测试 GBPUSDbc,H1: v1 = 12 = 0.90
0 22:15:05.379 ! 测试 GBPUSDbc,H1: v1 = 13 = 0.9
0 22:15:05.379 ! 测试 GBPUSDbc,H1: v1 = 14 = 0