我想我不是唯一一个遇到罕见情况的人,我需要获得小数位数,而Digits()函数 只对引号起作用,此外在任何地方都没有相关信息(至少在写这篇文章的时候,我之前找到了,所以我想展示我找到的解决方案)。
事实证明,其本质非常简单,但仍有一个缺点--该功能不识别零,如果在它们之后没有其他数字。例如,这个函数在0.01后面会返回2,但在0.0000后面会返回0(这意味着它不能看到四个零)。因此,你应该在你的发展中考虑这个缺点。
MQL5中的代码必须稍作改进,因为显然在MQL5中,双倍类型的变量在最后会自动分配,0,无论该变量是否被分配给一个整数。由于这个原因,该函数从未返回过0。
假设我们给出数字2.4875,函数返回4。
我们应该怎么做呢?我不明白的是(
我想我不是唯一一个遇到罕见情况的人,我需要获得小数位数,而Digits()函数 只对引号起作用,此外在任何地方都没有相关信息(至少在写这篇文章的时候,我之前找到了,所以我想展示我找到的解决方案)。
事实证明,其本质非常简单,但仍有一个缺点--该功能不识别零,如果在它们之后没有其他数字。例如,当函数后面是0.01时,将返回2,但当后面是0.0000时,将返回0(即它不能看到四个零)。因此,在你的发展中要考虑这个缺点。
MQL4中的代码
在MQL5的代码
MQL5的代码必须稍作改进,因为显然在MQL5中,双倍类型的变量在最后会自动分配为0,无论该变量是否为整数。由于这个原因,该函数从未返回过0。
string string_value = (string)value;
不要再读下去了 :-)
假设我们给出数字2.4875,该函数将返回4。
我们该怎么做呢?我似乎不明白这一点(
取决于谁需要什么。例如,我需要整数来更容易地计算相关指数
你不需要再读下去了 :-)
这里的程序员有什么不清楚的吗?)
谢谢
也是一个好办法
一个好的解决方案通常能正常工作
void OnStart() { double price = 500000000.0001; Print( price, ":", GetDigits( price )); }
结果:500000000.0001:8
小数点后有多少个数字?它真的是8吗?
一个好的解决方案通常能正常工作
结果:500000000.0001:8
小数点后有多少个数字?真的是八个吗?
是的,八个。
我想我不是唯一一个遇到罕见情况的人,我需要得到小数点后的数字,而Digits()函数 只对引号起作用,此外,在任何地方都没有相关信息(至少在写这篇文章时,我以前没有发现,所以我想展示我找到的解决方案)。
事实证明,平庸的本质是简单的,但仍然有一个缺点 - 这个功能不承认零,如果他们之后没有其他数字。例如,这个函数在0.01后面会返回2,但在0.0000后面会返回0(也就是说,它看不到四个零)。因此,在你的发展中要考虑这个缺点。
MQL4中的代码
在MQL5的代码
MQL5的代码必须稍作改进,因为显然在MQL5中,双倍类型的变量在最后会自动分配为0,无论该变量是否为整数。由于这个原因,该函数从未返回过0