返回负值的位置大小 - 页 3 1234 新评论 honest_knave 2015.07.10 18:57 #21 JD4:以上是对你的具体帖子"MathRound返回一个双数;无限的小数位。"再一次,根据文档页的内容。"返回值 四舍五入到最接近的整数的值。"现在,具体回应你帖子的这一部分。 "页面上所说的,就是它所做的。它是四舍五入的。与多个小数位的问题无关。"再说一遍,重读这段话,它说它返回"四舍五入到最接近的整数"。 根据定义,整数是一个整数,没有小数位。 再说一遍,如果这不是它实际做的,那么代码或描述就有问题,其中一个或另一个或两者都需要由MQ修复,否则就需要一个警告标签,说明这些函数没有像宣传的那样执行。如果它实际上返回它所给的类型,但在数学上相当于最接近的整数的值(如从1.23456返回1.00000,而1==1.00000),但不返回实际的整数类型,那么参考页需要指定一些东西,如 "不改变基础数据类型 "或其他一些明确说明的方式。 我认为这是一个从俄罗斯原始页面平移的翻译,因此,在英语中不像它应该那样清楚。 MetaQuotes的文档充其量是很弱的。然而,既然如此,MathRound() 根据定义返回一个双数。如果返回的值是"值除以2",它仍然是一个双数。同样,"数值四舍五入到最接近的整数 "仍然是一个双数。希望这有帮助 JD4 2015.07.10 19:35 #22 honest_knave:MetaQuotes的文档充其量是很弱的。然而,既然如此,MathRound() 根据定义返回一个双数。如果返回的值是"值除以2",它仍然是一个双数。同样,"数值四舍五入到最接近的整数 "仍然是一个双数。希望这对你有帮助 对我来说,"数值四舍五入到最近的整数 "并不清楚它返回的不是整数,因为整数的定义是这样的。 我明白它实际上是这样工作的,但这强调了我的观点,即代码和/或官方页面的措辞是错误的,需要修复。 要么代码需要调整,以便它确实返回int类型,要么页面的措辞需要改变。 我们作为用户没有办法做到这一点。你得到的四舍五入的值不会改变,除非你把它赋值给那个变量。 就像如果你用1.3的值四舍五入y,并把它放在x中,使用上面的措辞,在函数完成后,你会期望y仍然包含1。在我的脑海中,以及我的理解中,四舍五入意味着你要四舍五入到最接近的项目,而不是等同于该项目的值。 也许 "在翻译中丢失的东西 "这句话在这里非常合适。 honest_knave 2015.07.10 19:59 #23 JD4: 对我来说,"Value rounded till to the nearest integer "并不清楚它返回的不是整数,因为整数的定义是这样的。 我知道它实际上是这样工作的,但这强调了我的观点,即代码和/或官方页面的措辞是错误的,需要修复。 要么代码需要调整,以便它确实返回int类型,要么页面措辞需要改变。 我们作为用户没有办法这样做。你得到的四舍五入的值不会改变,除非你把它赋值给那个变量。 就像如果你用1.3的值四舍五入y,并把它放在x中,使用上面的措辞,在函数完成后,你会期望y仍然包含1。在我的脑海中,以及我的理解中,四舍五入意味着你要四舍五入到最接近的项目,而不是等同于该项目的值。 也许 "在翻译中丢失的东西 "这句话在这里非常合适。我不是一个文档的粉丝,但我不得不说,我认为他们在这方面是一致的。所有的文档都在页面顶部列出了返回的数据类型(int, double, bool等),后面的返回值部分从来没有重复过这个数据类型。另外,在这种情况下,他们返回的数据类型与被放入的数据类型完全相同。无论如何,如果你使用#property strict编译器指令,你应该得到一个警告。 JD4 2015.07.10 20:35 #24 honest_knave:我不是一个文档的粉丝,但我不得不说,我认为他们在这方面是一致的。所有的文档都在页面顶部列出了返回的数据类型(int, double, bool等),后面的返回值部分从来没有重复过这个数据类型。另外,在这种情况下,他们返回的数据类型与被放入的数据类型完全相同。在任何情况下,如果你使用#property strict编译器指令,你应该得到一个警告。我已经在MQL5.com论坛上发起了一个主题,网址是https://www.mql5.com/en/forum/61394,希望能最终帮助解决这个文档问题。也许如果我们有足够多的人支持这个想法,MQ会让我们大家一起帮助解决到目前为止对很多人来说都是一个问题。 我希望MQ会同意这个想法,因为我们作为用户不能改变任何事情。@ knave & WH - 我完全同意你的例子,但我仍然看到一个问题,我要么没有解释清楚,要么我是少数几个认为这是一个问题的人之一。 对我来说,你的例子证明了我对这个话题的看法,而不是你认为他们证明了你的看法。knave,你的例子将 返回一个错误,因为它没有返回它应该返回的数据类型,即int。 事实上,你把你的变量铸造为int,只是让我们更容易看到函数不能正常工作的问题。WH,你指出了那一行(来自文档页),它说的和我强调的那一行基本上是一样的。 这个例子只用了一个双数作为被发送到 函数的值。 你的帖子中没有任何一个显示100%明确地说明从 函数返回的数据类型是双数,只是说这个例子发送的是一个双数。四舍五入一般被认为是将一个特定数字的值改为较低的精度。 我想在这一点上我们都可以达成共识。在这种情况下,也没有什么不同。 该页规定 "四舍五入到指定数值的最近的整数"。 它的意思是它将从另一个数值四舍五入到一个较小的精度(int)。 在所用的例子中,发送的是一个双数。 这就是所有100%清楚的内容。 honest_knave 2015.07.10 23:31 #25 对不起,JD4,你完全把我弄糊涂了......JD4:你的帖子中没有一个显示100%明确地说明从 函数中 返回的数据类型是一个双数,只是说明这个例子是发送一个双数。这正是我用箭头标注的内容。它返回的是一个双数(大的红色箭头),传递的参数也是一个双数(在我的箭头下面)。看一下任何一个函数。OrderSend() 返回一个int...OrderClose() 返回一个bool....,MathRound() 返回一个双数JD4。knave,你的例子将 返回一个错误,因为它没有返回它应该返回的数据类型,一个int。 事实上,你把你的变量铸成一个int,只是让我们更容易看到函数不能正常工作的问题。该函数的工作原理与广告中的完全一致。如果你认为它是一个int(错误),你会得到这个结果。 如果你把它类型化为int,你就承认你使用了错误的数据类型。 如果你把它当作一个双数(它就是),你就没有警告。 JD4 2015.07.11 00:00 #26 honest_knave:对不起,JD4,你完全把我弄糊涂了......这正是我用箭头标出的内容。它返回的是一个双数(大的红色箭头),传递的参数也是一个双数(在我的箭头下面)。看一下任何一个函数。OrderSend() 返回一个int...OrderClose() 返回一个bool....,MathRound() 返回一个双数该函数的工作原理与广告中的完全一致。如果你认为它是一个int(错误),你会得到这个。如果你把它类型化为int,你会承认你使用了错误的数据类型。如果你把它当作一个双数(它就是),你就不会有任何警告。这个例子是通过类型转换来返回双倍数的。 在你的int RoundedNumber的代码例子中,你是通过类型转换来返回int作为返回类型的。 这应该是没有必要的,因为根据页面上的内容,它应该返回一个int。 顶部的一行和返回值中的一行说它四舍五入为一个指定值的整数。一个整数,不管我们怎么说,都没有任何小数位、分数或任何其他表示整数、零和负整数之间的数字的方式。 正如我上面发布的例子,根据给出的文档,发送MathRound函数 "1.3 "应该返回 "1",而不是 "1.0",因为 "1.0 "不是一个整数,但 "1 "是。(引号只是为了说明问题)如果你把它当作一个双数(它可能是,但不应该是),那么这只是让这个不正确的函数继续操作,与它的文档所规定的操作相悖,即返回一个从发送到它的值(即双数)中取整的整数。将一个双数送入四舍五入(现在代码的编写方式)到一个整数,然后将返回的值铸造或存储为一个双数类型,不会产生错误,因为它应该返回一个int,如果你将一个int存储为一个双数,你不会在转换中损失任何精度。如果你将一个双倍数存储为一个int,你将期待一个像你所显示的错误,因为你强迫它变成另一种形式,其精度比以前的要低。如果MathRound函数不应该返回整数,那么就需要修改页面上的措辞,使其不说应该返回整数。 我的问题从来都是关于这个函数所做的事情,除了它与页面上所说的应该做的事情相悖之外。他们需要修正这个函数的代码,使它像文档页所说的那样返回一个int,或者编辑文档页以反映它不一定返回一个int。"四舍五入到最接近的整数 "正是如此,一个整数。编辑:我通过C++和Java的参考资料做了进一步的研究,因为MQL在某种程度上是基于C++的,并且在语法上与Java和C++相似。C++在文档的一个部分(http://www.cplusplus.com/reference/cmath/round/) 显示"Round to nearest 返回与x最接近的积分值,半途而废。" 但在页面的后面,它说"Return Value 将x的值舍入到最近的积分(作为一个浮点值)。" 你可能会说这支持了你的观点,但事实上它并不支持,因为C++规定它返回一个浮点数。Java文档在http://docs.oracle.com/javase/7/docs/api/java/lang/Math.html,显示了以下两个名为round的方法。 这两个(Java和C++)在其语言中的功能等同于MathRound和/或MQL中的round函数。static long round(double a)返回与参数最接近的长数,并四舍五入。 static int round(float a)返回与参数最接近的int,并向上舍入。 ydrol 2015.07.11 01:19 #27 MQL MathRound在一个浮动数据类型中返回一个整数值。当然,C++或Java的四舍五入函数 做什么是不相关的。如果你想要的话,在MQL中写你自己的 "int round(double a) "函数是很容易的。(32位)浮点数可以很好地容纳(16位)整数而不损失精度。问题是,OP希望数值被四舍五入到小数点后两位,并希望它是精确的。这是不可能的。 JD4 2015.07.11 01:23 #28 ydrol:MQL MathRound在一个浮动数据类型中返回一个整数值。当然,C++或Java的四舍五入函数做什么是不相关的。如果你想要的话,在MQL中写你自己的 "int round(double a) "函数是很容易的。(32位)浮点数可以很好地容纳(16位)整数而不损失精度。问题是,OP希望数值被四舍五入到小数点后两位,并希望它是精确的。这是不可能的。我的帖子偏离了主题,特别是关于函数以某种方式运行的问题,我已经不再发表这种偏离主题的讨论。 如果这个函数的讨论最终转移到其他地方,我也无所谓。 编辑:我在https://www.mql5.com/en/forum/156174,为继续讨论这个冲突的文档页开了一个主题。 Gum,我已经在这个主题上回复了你下面的帖子。 Keith Watford 2015.07.11 01:43 #29 JD4,你似乎是唯一一个对此感到困惑的人HonestKnave已经指出,文档清楚地表明,该函数 返回一个双数。一个整数表示为一个双数。"四舍五入到最接近的整数 "并不意味着它被转换为一个整数。如果我告诉你把一块木头切成与一根绳子相同的长度。木头仍然是木头,它不会突然变成一段字符串。 honest_knave 2015.07.11 06:54 #30 JD4:顶部的一行和返回值中的一行说它四舍五入到指定值的整数。JD4:你需要修改这个函数的代码,使它像文档页所说的那样返回一个整数,或者编辑文档页以反映它不一定返回一个整数。"四舍五入到最接近的整数 "正是如此,一个整数。好吧,我不知道什么能说服你JD4。文档清楚地、百分之百地指出,该函数返回一个双数。你是在对返回值的描述中读出了别的东西--它从来没有说过它返回的是一个整数。当你看OrderSend()时,它说 "返回的值。返回交易服务器分配给订单的票据号码,如果失败则返回-1。要获得额外的错误信息,必须调用GetLastError()函数。"那么,它的数字是什么意思?这有点模糊,你不觉得吗?他们是指双数、浮点数、图表、短、英特、长吗?答案就在页面的顶部,就像我之前发布的那个大箭头。那是他们的标准格式,你可以在那里看到返回的数据类型。(注意我没有说返回的数据值)。我真的想不出文档中的任何一个例子,"返回值 "部分曾经提到过数据类型。 1234 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
以上是对你的具体帖子"MathRound返回一个双数;无限的小数位。"
再一次,根据文档页的内容。
"返回值
四舍五入到最接近的整数的值。"
现在,具体回应你帖子的这一部分。
"页面上所说的,就是它所做的。它是四舍五入的。与多个小数位的问题无关。"
再说一遍,重读这段话,它说它返回"四舍五入到最接近的整数"。 根据定义,整数是一个整数,没有小数位。 再说一遍,如果这不是它实际做的,那么代码或描述就有问题,其中一个或另一个或两者都需要由MQ修复,否则就需要一个警告标签,说明这些函数没有像宣传的那样执行。
如果它实际上返回它所给的类型,但在数学上相当于最接近的整数的值(如从1.23456返回1.00000,而1==1.00000),但不返回实际的整数类型,那么参考页需要指定一些东西,如 "不改变基础数据类型 "或其他一些明确说明的方式。 我认为这是一个从俄罗斯原始页面平移的翻译,因此,在英语中不像它应该那样清楚。
MetaQuotes的文档充其量是很弱的。
然而,既然如此,MathRound() 根据定义返回一个双数。
如果返回的值是"值除以2",它仍然是一个双数。
同样,"数值四舍五入到最接近的整数 "仍然是一个双数。
希望这有帮助
MetaQuotes的文档充其量是很弱的。
然而,既然如此,MathRound() 根据定义返回一个双数。
如果返回的值是"值除以2",它仍然是一个双数。
同样,"数值四舍五入到最接近的整数 "仍然是一个双数。
希望这对你有帮助
对我来说,"Value rounded till to the nearest integer "并不清楚它返回的不是整数,因为整数的定义是这样的。 我知道它实际上是这样工作的,但这强调了我的观点,即代码和/或官方页面的措辞是错误的,需要修复。 要么代码需要调整,以便它确实返回int类型,要么页面措辞需要改变。 我们作为用户没有办法这样做。你得到的四舍五入的值不会改变,除非你把它赋值给那个变量。 就像如果你用1.3的值四舍五入y,并把它放在x中,使用上面的措辞,在函数完成后,你会期望y仍然包含1。在我的脑海中,以及我的理解中,四舍五入意味着你要四舍五入到最接近的项目,而不是等同于该项目的值。 也许 "在翻译中丢失的东西 "这句话在这里非常合适。
我不是一个文档的粉丝,但我不得不说,我认为他们在这方面是一致的。所有的文档都在页面顶部列出了返回的数据类型(int, double, bool等),后面的返回值部分从来没有重复过这个数据类型。另外,在这种情况下,他们返回的数据类型与被放入的数据类型完全相同。
无论如何,如果你使用#property strict编译器指令,你应该得到一个警告。
我不是一个文档的粉丝,但我不得不说,我认为他们在这方面是一致的。所有的文档都在页面顶部列出了返回的数据类型(int, double, bool等),后面的返回值部分从来没有重复过这个数据类型。另外,在这种情况下,他们返回的数据类型与被放入的数据类型完全相同。
在任何情况下,如果你使用#property strict编译器指令,你应该得到一个警告。
我已经在MQL5.com论坛上发起了一个主题,网址是https://www.mql5.com/en/forum/61394,希望能最终帮助解决这个文档问题。也许如果我们有足够多的人支持这个想法,MQ会让我们大家一起帮助解决到目前为止对很多人来说都是一个问题。 我希望MQ会同意这个想法,因为我们作为用户不能改变任何事情。
@ knave & WH - 我完全同意你的例子,但我仍然看到一个问题,我要么没有解释清楚,要么我是少数几个认为这是一个问题的人之一。 对我来说,你的例子证明了我对这个话题的看法,而不是你认为他们证明了你的看法。
knave,你的例子将 返回一个错误,因为它没有返回它应该返回的数据类型,即int。 事实上,你把你的变量铸造为int,只是让我们更容易看到函数不能正常工作的问题。
WH,你指出了那一行(来自文档页),它说的和我强调的那一行基本上是一样的。 这个例子只用了一个双数作为被发送到 函数的值。 你的帖子中没有任何一个显示100%明确地说明从 函数返回的数据类型是双数,只是说这个例子发送的是一个双数。
四舍五入一般被认为是将一个特定数字的值改为较低的精度。 我想在这一点上我们都可以达成共识。
在这种情况下,也没有什么不同。 该页规定 "四舍五入到指定数值的最近的整数"。 它的意思是它将从另一个数值四舍五入到一个较小的精度(int)。 在所用的例子中,发送的是一个双数。 这就是所有100%清楚的内容。
对不起,JD4,你完全把我弄糊涂了......
你的帖子中没有一个显示100%明确地说明从 函数中 返回的数据类型是一个双数,只是说明这个例子是发送一个双数。
这正是我用箭头标注的内容。它返回的是一个双数(大的红色箭头),传递的参数也是一个双数(在我的箭头下面)。看一下任何一个函数。OrderSend() 返回一个int...OrderClose() 返回一个bool....,MathRound() 返回一个双数
knave,你的例子将 返回一个错误,因为它没有返回它应该返回的数据类型,一个int。 事实上,你把你的变量铸成一个int,只是让我们更容易看到函数不能正常工作的问题。
该函数的工作原理与广告中的完全一致。
如果你认为它是一个int(错误),你会得到这个结果。
如果你把它类型化为int,你就承认你使用了错误的数据类型。
如果你把它当作一个双数(它就是),你就没有警告。
对不起,JD4,你完全把我弄糊涂了......
这正是我用箭头标出的内容。它返回的是一个双数(大的红色箭头),传递的参数也是一个双数(在我的箭头下面)。看一下任何一个函数。OrderSend() 返回一个int...OrderClose() 返回一个bool....,MathRound() 返回一个双数
该函数的工作原理与广告中的完全一致。
如果你认为它是一个int(错误),你会得到这个。
如果你把它类型化为int,你会承认你使用了错误的数据类型。
如果你把它当作一个双数(它就是),你就不会有任何警告。
这个例子是通过类型转换来返回双倍数的。 在你的int RoundedNumber的代码例子中,你是通过类型转换来返回int作为返回类型的。 这应该是没有必要的,因为根据页面上的内容,它应该返回一个int。 顶部的一行和返回值中的一行说它四舍五入为一个指定值的整数。一个整数,不管我们怎么说,都没有任何小数位、分数或任何其他表示整数、零和负整数之间的数字的方式。 正如我上面发布的例子,根据给出的文档,发送MathRound函数 "1.3 "应该返回 "1",而不是 "1.0",因为 "1.0 "不是一个整数,但 "1 "是。(引号只是为了说明问题)
如果你把它当作一个双数(它可能是,但不应该是),那么这只是让这个不正确的函数继续操作,与它的文档所规定的操作相悖,即返回一个从发送到它的值(即双数)中取整的整数。
将一个双数送入四舍五入(现在代码的编写方式)到一个整数,然后将返回的值铸造或存储为一个双数类型,不会产生错误,因为它应该返回一个int,如果你将一个int存储为一个双数,你不会在转换中损失任何精度。如果你将一个双倍数存储为一个int,你将期待一个像你所显示的错误,因为你强迫它变成另一种形式,其精度比以前的要低。
如果MathRound函数不应该返回整数,那么就需要修改页面上的措辞,使其不说应该返回整数。 我的问题从来都是关于这个函数所做的事情,除了它与页面上所说的应该做的事情相悖之外。他们需要修正这个函数的代码,使它像文档页所说的那样返回一个int,或者编辑文档页以反映它不一定返回一个int。"四舍五入到最接近的整数 "正是如此,一个整数。
编辑:我通过C++和Java的参考资料做了进一步的研究,因为MQL在某种程度上是基于C++的,并且在语法上与Java和C++相似。C++在文档的一个部分(http://www.cplusplus.com/reference/cmath/round/) 显示"Round to nearest 返回与x最接近的积分值,半途而废。" 但在页面的后面,它说"Return Value 将x的值舍入到最近的积分(作为一个浮点值)。" 你可能会说这支持了你的观点,但事实上它并不支持,因为C++规定它返回一个浮点数。Java文档在http://docs.oracle.com/javase/7/docs/api/java/lang/Math.html,显示了以下两个名为round的方法。 这两个(Java和C++)在其语言中的功能等同于MathRound和/或MQL中的round函数。
MQL MathRound在一个浮动数据类型中返回一个整数值。当然,C++或Java的四舍五入函数 做什么是不相关的。如果你想要的话,在MQL中写你自己的 "int round(double a) "函数是很容易的。
(32位)浮点数可以很好地容纳(16位)整数而不损失精度。问题是,OP希望数值被四舍五入到小数点后两位,并希望它是精确的。这是不可能的。
MQL MathRound在一个浮动数据类型中返回一个整数值。当然,C++或Java的四舍五入函数做什么是不相关的。如果你想要的话,在MQL中写你自己的 "int round(double a) "函数是很容易的。
(32位)浮点数可以很好地容纳(16位)整数而不损失精度。问题是,OP希望数值被四舍五入到小数点后两位,并希望它是精确的。这是不可能的。
我的帖子偏离了主题,特别是关于函数以某种方式运行的问题,我已经不再发表这种偏离主题的讨论。 如果这个函数的讨论最终转移到其他地方,我也无所谓。
编辑:我在https://www.mql5.com/en/forum/156174,为继续讨论这个冲突的文档页开了一个主题。 Gum,我已经在这个主题上回复了你下面的帖子。JD4,你似乎是唯一一个对此感到困惑的人
HonestKnave已经指出,文档清楚地表明,该函数 返回一个双数。一个整数表示为一个双数。
"四舍五入到最接近的整数 "并不意味着它被转换为一个整数。
如果我告诉你把一块木头切成与一根绳子相同的长度。木头仍然是木头,它不会突然变成一段字符串。
顶部的一行和返回值中的一行说它四舍五入到指定值的整数。
你需要修改这个函数的代码,使它像文档页所说的那样返回一个整数,或者编辑文档页以反映它不一定返回一个整数。"四舍五入到最接近的整数 "正是如此,一个整数。
好吧,我不知道什么能说服你JD4。文档清楚地、百分之百地指出,该函数返回一个双数。你是在对返回值的描述中读出了别的东西--它从来没有说过它返回的是一个整数。
当你看OrderSend()时,它说 "返回的值。返回交易服务器分配给订单的票据号码,如果失败则返回-1。要获得额外的错误信息,必须调用GetLastError()函数。"
那么,它的数字是什么意思?这有点模糊,你不觉得吗?他们是指双数、浮点数、图表、短、英特、长吗?答案就在页面的顶部,就像我之前发布的那个大箭头。那是他们的标准格式,你可以在那里看到返回的数据类型。(注意我没有说返回的数据值)。我真的想不出文档中的任何一个例子,"返回值 "部分曾经提到过数据类型。