Каков наилучший способ округлить результат деления в кэше межсистемных систем?Как округлить результат разделения в кэше межсистемных систем?
Спасибо.
Каков наилучший способ округлить результат деления в кэше межсистемных систем?Как округлить результат разделения в кэше межсистемных систем?
Спасибо.
Есть некоторые функции, которые используются для форматирования чисел, а они вокруг него, если это необходимо
$justify (выражение, ширина [десятичный]) - Caché раундов или подушечки количество дробных цифр в выражении для это значение.
write $justify(5/3,0,3)
1.667
$fnumber (inumber, формат, десятичное)
write $fnumber(5/3,"",3)
1.667
$number (Num, формат, мин, макс)
write $number(5/3,3)
1.667
$normalize (Num, масштаб)
w $normalize(5/3,3)
1.667
Вы просто можете выбрать, какой из них гораздо более подходит для вас. Они делают разные вещи, но результат может быть таким же.
В стандартном MUMPS (сценарий Cache Object Back обратно совместим с) есть три оператора, связанные с разделением. Первый - это одиночный символ «/» (т. Е. Косая черта). Это реальная цифра. 5/2 - 2,5, 10,5/5 - 2,1 и т. Д. Это занимает два числа (каждый из которых может включать десятичную точку и долю) и возвращает число, возможно, с долей. Полезная вещь, которую следует помнить, состоит в том, что этот числовой разрыв дает результаты, которые так просты, какими они могут быть. Если перед десятичной точкой, как 0007, есть ведущие нули, она будет обрабатывать число как 7. Если после десятичной точки есть конечные нули, они также будут обрезаны. Итак, 2.000 обрезается до 2 (не замечает десятичной точки) и 00060.0100 будет обрезано до 60,01
В прошлом многие разработчики гарантировали бы, что 3/3 всегда будут 1 (не .99999), и что математика была сделано так точно, как можно было бы сделать. Сейчас это не акцент, но раньше были специальные библиотеки для обработки двоичного кодированного десятичного знака (BCD), чтобы гарантировать как можно близкие возможности, чтобы дрожи ни копейки не генерировались.
Следующим оператором деления был одиночный символ «\» (т. Е. Обратная косая черта). этот оператор назывался целым делением или «div» некоторыми людьми. Было бы сделать дивизию и выбросить остаток. Интересная вещь в том, что она всегда будет приводить к целому числу, но входные данные не должны быть целыми. Итак, 10 \ 2 равно 5, но 23 \ 2,3 равно 10, и 23,3 \ 2,33. Если бы осталась доля, она просто отбрасывалась. Таким образом, 23.3 \ 2.3 равно 10. Оператор полного деления даст вам много фракций. 23.3/2.3 - 10.130434 и т. Д.
Конечным оператором деления является остаток (или «mod» или «modulo»), который символизируется одиночным символом «#» (иногда называемым хэшем, значком фунта или октоторпом). Чтобы получить ответ для этого, вычисляется целочисленное деление «/», и то, что когда-либо осталось, когда вычисляется целочисленное деление, будет результатом. В нашем примере из 23 \ 2 ответ равен 11, а оставшееся значение равно 1, поэтому 23 # 2 равно 1 ad 23.3 # 2.3. .3 Вы можете заметить, что (число-делитель) + ((число \ divisior) * делитель) всегда будет вашим первоначальным номером назад.
Надеюсь, это поможет вам понять эту идею в своем программировании.
Каков наилучший способ получить только целочисленный результат? – syonip
Не уверен, что вы имеете в виду, но я думаю, что $ fnumber является лучшим – DAiMor
Я имею в виду, что в вашем примере, я хочу получить 5/3 = 2 – syonip