@@ -261,12 +261,12 @@ end
261
261
262
262
-- Convert int to 4 bytes string
263
263
function intToBytes (int )
264
- return string.char (
265
- bit .band (int , 0xFF ),
266
- bit .band (bit .rshift (int , 8 ), 0xFF ),
267
- bit .band (bit .rshift (int , 16 ), 0xFF ),
268
- bit .band (bit .rshift (int , 24 ), 0xFF )
269
- )
264
+ return string.char (
265
+ bit .band (int , 0xFF ),
266
+ bit .band (bit .rshift (int , 8 ), 0xFF ),
267
+ bit .band (bit .rshift (int , 16 ), 0xFF ),
268
+ bit .band (bit .rshift (int , 24 ), 0xFF )
269
+ )
270
270
end
271
271
272
272
do
@@ -627,7 +627,7 @@ function naturalSortCompare(a, b)
627
627
end
628
628
end
629
629
630
- -- Rounds a number to the nearest <dec> decimal places
630
+ -- Rounds a number to the nearest <dec> decimal places 2.5->3 and -2.5->-2
631
631
function round (val , dec )
632
632
if dec then
633
633
return m_floor (val * 10 ^ dec + 0.5 ) / 10 ^ dec
@@ -651,56 +651,58 @@ end
651
651
652
652
-- Symmetric round with precision: Rounds towards zero to <dec> decimal places.
653
653
function roundSymmetric (val , dec )
654
- if dec then
655
- local factor = 10 ^ dec
656
- if val >= 0 then
657
- return m_floor (val * factor + 0.5 ) / factor
658
- else
659
- return m_ceil (val * factor - 0.5 ) / factor
660
- end
661
- else
662
- if val >= 0 then
663
- return m_floor (val + 0.5 )
664
- else
665
- return m_ceil (val - 0.5 )
666
- end
667
- end
654
+ if dec then
655
+ local factor = 10 ^ dec
656
+ if val >= 0 then
657
+ return m_floor (val * factor + 0.5 ) / factor
658
+ else
659
+ return m_ceil (val * factor - 0.5 ) / factor
660
+ end
661
+ else
662
+ if val >= 0 then
663
+ return m_floor (val + 0.5 )
664
+ else
665
+ return m_ceil (val - 0.5 )
666
+ end
667
+ end
668
+ end
669
+
670
+ -- Use rounding formula for postive numbers always used in corrupted unique roll ranges this is an incorrect way to round numbers.
671
+ function alwaysPositveRound (val , dec )
672
+ if dec then
673
+ local factor = 10 ^ dec
674
+ return m_floor (val * factor + 0.5 ) / factor
675
+ else
676
+ return m_floor (val + 0.5 )
677
+ end
668
678
end
669
679
670
680
-- Symmetric floor with precision: Rounds down towards zero to <dec> decimal places.
671
681
function floorSymmetric (val , dec )
672
- if dec then
673
- local factor = 10 ^ dec
674
- if val >= 0 then
675
- return m_floor (val * factor ) / factor
676
- else
677
- return m_ceil (val * factor ) / factor
678
- end
679
- else
680
- if val >= 0 then
681
- return m_floor (val )
682
- else
683
- return m_ceil (val )
684
- end
685
- end
686
- end
687
-
688
- -- Symmetric ceil with precision: Rounds up towards zero to <dec> decimal places.
682
+ if dec then
683
+ local factor = 10 ^ dec
684
+ return select (1 , math.modf (val * factor )) / factor
685
+ else
686
+ return select (1 , math.modf (val ))
687
+ end
688
+ end
689
+
690
+ -- Symmetric ceil with precision: Rounds up away from zero to <dec> decimal places.
689
691
function ceilSymmetric (val , dec )
690
- if dec then
691
- local factor = 10 ^ dec
692
- if val >= 0 then
693
- return m_ceil (val * factor ) / factor
694
- else
695
- return m_floor (val * factor ) / factor
696
- end
697
- else
698
- if val >= 0 then
699
- return m_ceil (val )
700
- else
701
- return m_floor (val )
702
- end
703
- end
692
+ if dec then
693
+ local factor = 10 ^ dec
694
+ if val >= 0 then
695
+ return m_ceil (val * factor ) / factor
696
+ else
697
+ return m_floor (val * factor ) / factor
698
+ end
699
+ else
700
+ if val >= 0 then
701
+ return m_ceil (val )
702
+ else
703
+ return m_floor (val )
704
+ end
705
+ end
704
706
end
705
707
706
708
--- @param n number
0 commit comments