绕过MQL4和MQL5中的Digits(),获取任何数字的小数位数(不仅仅是引号)。 - 页 11

 
multiplicator:
漂浮物就是这样的***。这些漂浮物除了麻烦之外什么都没有。

他们什么时候才能做出正常的编程数字?

你可以让一个小数以整数和小数部分的 形式存储在内存中。

float比较简单,它的精度(后面的数字)比double低。

这些是编程的正常数字吗?)))),显然你想要十进制,但可惜的是,开发者已经明确表示(搜索管理员Renat的帖子),不会有新的类型了

双倍于分数,这里做了https://www.mql5.com/ru/forum/290279#comment_9396706

但我仍然需要+、-、*、/来重载运算符,所以我不感兴趣。

Число в дробь (convert double to fraction)
Число в дробь (convert double to fraction)
  • 2018.11.16
  • www.mql5.com
Ищу способ преобразовать вещественное число в дробь, нагуглил исходник https://stackoverflow...
 
Igor Makanu:

float比较简单,它的精度(后面的数字)比double低。

这些是编程的正常数字吗?)))),显然你想要十进制,但可惜的是,开发者明确说过(搜索管理员Renat的帖子),不会有新的类型。

双倍于分数,这里做了https://www.mql5.com/ru/forum/290279#comment_9396706

但仍然需要运算符+、-、*、/来进行重载,所以目前还没有兴趣放弃。

是的,DECIMAL。



或者开发你自己的类型。这样,数字在内存中被存储为其整数部分和小数部分。
像两个整数



2 147 483 647.2 147 483 647



而它所占用的内存和两个整数一样多。8个字节。

 
multiplicator:

是的,DECIMAL。



或者开发你自己的类型来存储数字的整数部分和小数部分。
像两个整数



2 147 483 647.2 147 483 647



而且它占用的内存和两个整数一样多。8个字节。

已经有了一个标准的双倍数算术

https://en.wikipedia.org/wiki/Quadruple-precision_floating-point_format

Quadruple-precision floating-point format - Wikipedia
Quadruple-precision floating-point format - Wikipedia
  • en.wikipedia.org
This 128-bit quadruple precision is designed not only for applications requiring results in higher than double precision,[1] but also, as a primary function, to allow the computation of double precision results more reliably and accurately by minimising overflow and round-off errors in intermediate calculations and scratch variables. William...
 
Taras Slobodyanik:

已经有了一个标准的双倍数算术

https://en.wikipedia.org/wiki/Quadruple-precision_floating-point_format

恰恰相反,我想摆脱双倍工资,而你建议双倍工资。

Dables在内存中以不准确的形式存储数字。
我给了你 一个视频。
 
multiplicator:
相反,我想远离dubles,而你却给我提供了一个duble-duble。

dubles在内存中以不准确的形式存储数字。
我给了你 一个视频。

好吧,如果计算速度和兼容性并不重要,那么是的,你可以随心所欲地计算。
但是,一旦这些数字需要在某个地方使用--你将不得不把所有的东西都转换回dable,转换为一个不准确的数字。

 
Taras Slobodyanik:

好吧,如果速度和兼容性并不重要,那么是的,你可以随心所欲地计算。
但是,一旦这些数字需要在某个地方使用,你就必须把所有的东西转换回一个双倍的、不准确的数字。

那么,在十进制中,它是可以的。 它们以某种方式被相互除掉,并以精确的形式存储。

 
multiplicator:

好吧,在十进制中,这很好。不知何故,它们被相互除以,并以精确的形式存储。

嗯,不是十进制的,而是分数的

而在十进制中,你必须接受同样的不准确--缩写,因为不可能(没有必要)写出无限的精确数字。

 
multiplicator:

嗯,在十进制中是可以的。不知何故,它们被相互除以,并以精确的形式保存。

我想知道你将如何计算对数,用非整数进行度数转换,使用三角函数,....使用第三方库,指标...他们都是错误的!
 
Aliaksandr Hryshyn:
我想知道你将如何计算对数,用非整数的力量,使用三角学,....使用第三方库,指标...他们都很容易出错!
你习惯于用十进制数而不是二进制数工作。
而且你已经习惯了误差范围在哪里。
 

https://www.mql5.com/ru/forum/287618/page3#comment_9240442

这可能是最好的解决方案,但它会快40%(由于某些原因,mql在循环中会变慢)。

int d2(double x){
  if(x==NormalizeDouble(x,6))
   {
    if(x==NormalizeDouble(x,5))
     {    
      if(x==NormalizeDouble(x,4))
       {
        if(x==NormalizeDouble(x,3))
         {
          if(x==NormalizeDouble(x,2))
           {
            if(x==NormalizeDouble(x,1))
             {
              if(x==NormalizeDouble(x,0))
               {
                return 0;
               }
              return 1;
             }
            return 2;
           }
          return 3;
         }
        return 4;
       }
      return 5;
     }
    return 6;
   }
  return 7;
}
Получаем количество десятичных знаков после запятой любых чисел (не только котировок) в обход Digits() на MQL4 и MQL5
Получаем количество десятичных знаков после запятой любых чисел (не только котировок) в обход Digits() на MQL4 и MQL5
  • 2018.11.03
  • www.mql5.com
Думаю не у одного меня была редкая ситуация когда нужно было получить количество десятичных знаков после запятой, а функция Digits() работает тольк...