Как Вы получаете интервал и по модулю (модификация) подразделения с NSDecimalNumber

При установке возвращаемого значения setInterval к переменной можно использовать clearInterval для остановки его.

var myTimer = setInterval(...);
clearInterval(myTimer);
7
задан Meltemi 24 July 2009 в 03:20
поделиться

2 ответа

  1. Разделите дивиденд на делитель, округляя в меньшую сторону. Это дает вам частное.
  2. Умножьте делитель на частное.
  3. Вычтите это из делимого. Это дает вам остаток.

(37.50 // 5) == 7; 7 * 5 == 35; 37,50 - 35 = 2,50.

(Примечание: // - оператор Python для целочисленного деления. Я позаимствовал его здесь. Очевидно, вам не следует пытаться использовать // ] для разделения в коде Objective-C.)

5
ответ дан 6 December 2019 в 09:21
поделиться

Теоретически можно проделать некоторые трюки с методами NSDecimalNumber decimalNumberByDividingBy: , decimalNumberByMultiplyingBy: 1140515] decimalValue . Разделите числа, возьмите структуру десятичного числа, вычислите остаток от структуры, затем создайте новое десятичное число с этим остатком и умножьте этот остаток на исходное число.

Однако более простой способ сделать это, вероятно, будет заключаться в том, чтобы определить максимальную точность, которую вы хотите (назовите ее N разрядов после десятичной точки), умножьте число на 10eN, затем просто возьмите целое значение и сделайте свое деление и мод на это. Однако вы рискуете потерять данные, особенно с очень большими числами, поэтому проверьте наибольшее число, которое вы хотите, и выясните, какой тип данных - если таковой имеется - подойдет вам. NSNumber поддерживает unsignedLongLongValue .

поэтому проверьте наибольшее число, которое вы хотите, и выясните, какой тип данных - если он есть - подойдет вам. NSNumber поддерживает unsignedLongLongValue .

поэтому проверьте наибольшее число, которое вы хотите, и выясните, какой тип данных - если он есть - подойдет вам. NSNumber поддерживает unsignedLongLongValue .

1
ответ дан 6 December 2019 в 09:21
поделиться