Странно. Написал вот такой тестовый скрипт:
Результаты:
Т.е. round(x, 2) работает как описано. По поводу 0 в конце: после floor/ceil/round, тип данных у результата остается float - поэтомы и цифры после запятой. Это правильно, если число будет использоваться в дальнейших вычислениях. Для красивого форматирования числа можно использовать функцию format (http://wiki.netxms.org/wiki/NXSL:format), отдельно или как обертку вокруг ceil/floor/round.
Пример использования format:
Результаты:
Code Select
C:\Source\NetXMS\x64\debug>cat test13.nxsl
if ($1 == null)
$1 = 1.234567;
println "floor(" . $1 . ") = " . floor($1);
println "ceil(" . $1 . ") = " . ceil($1);
println "round(" . $1 . ") = " . round($1);
println "round(" . $1 . ", 2) = " . round($1, 2);
Результаты:
Code Select
C:\Source\NetXMS\x64\debug>nxscript test13.nxsl
NetXMS Scripting Host Version 1.2.6
Copyright (c) 2005-2012 Victor Kirhenshtein
floor(1.234567) = 1.000000
ceil(1.234567) = 2.000000
round(1.234567) = 1.000000
round(1.234567, 2) = 1.230000
C:\Source\NetXMS\x64\debug>nxscript test13.nxsl 2.378
NetXMS Scripting Host Version 1.2.6
Copyright (c) 2005-2012 Victor Kirhenshtein
floor(2.378) = 2.000000
ceil(2.378) = 3.000000
round(2.378) = 2.000000
round(2.378, 2) = 2.380000
C:\Source\NetXMS\x64\debug>nxscript test13.nxsl 2.98
NetXMS Scripting Host Version 1.2.6
Copyright (c) 2005-2012 Victor Kirhenshtein
floor(2.98) = 2.000000
ceil(2.98) = 3.000000
round(2.98) = 3.000000
round(2.98, 2) = 2.980000
C:\Source\NetXMS\x64\debug>
Т.е. round(x, 2) работает как описано. По поводу 0 в конце: после floor/ceil/round, тип данных у результата остается float - поэтомы и цифры после запятой. Это правильно, если число будет использоваться в дальнейших вычислениях. Для красивого форматирования числа можно использовать функцию format (http://wiki.netxms.org/wiki/NXSL:format), отдельно или как обертку вокруг ceil/floor/round.
Пример использования format:
Code Select
C:\Source\NetXMS\x64\debug>cat test14.nxsl
if ($1 == null)
$1 = 1.234567;
println "format(" . $1 . ", 1, 2) = " . format($1, 1, 2);
println "format(floor(" . $1 . "), 1, 0) = " . format(floor($1), 1, 0);
C:\Source\NetXMS\x64\debug>
Результаты:
Code Select
C:\Source\NetXMS\x64\debug>nxscript test14.nxsl
NetXMS Scripting Host Version 1.2.6
Copyright (c) 2005-2012 Victor Kirhenshtein
format(1.234567, 1, 2) = 1.23
format(floor(1.234567), 1, 0) = 1
C:\Source\NetXMS\x64\debug>nxscript test14.nxsl 17.5672334
NetXMS Scripting Host Version 1.2.6
Copyright (c) 2005-2012 Victor Kirhenshtein
format(17.5672334, 1, 2) = 17.57
format(floor(17.5672334), 1, 0) = 17
C:\Source\NetXMS\x64\debug>
