From dbf30716645dbfb04c14d62ca329eefdcd94a4d7 Mon Sep 17 00:00:00 2001 From: clodan Date: Wed, 29 Jan 2025 13:30:52 +0000 Subject: [PATCH] Improved precision for smaller decimals --- Libraries/Core/Utils/RandomUtil.cs | 5 +++-- UnitTests/Tests/Utils/RandomUtilTests.cs | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/Libraries/Core/Utils/RandomUtil.cs b/Libraries/Core/Utils/RandomUtil.cs index 06a8cd9d..feb3338b 100644 --- a/Libraries/Core/Utils/RandomUtil.cs +++ b/Libraries/Core/Utils/RandomUtil.cs @@ -414,10 +414,11 @@ public class RandomUtil(ISptLogger _logger, ICloner _cloner) /// The number of decimal places, or 0 if none exist. public int GetNumberPrecision(double num) { + var preciseNum = (decimal)num; var factor = 0; - while (num % 1 > double.Epsilon) + while ((double)(preciseNum % 1) > double.Epsilon) { - num *= 10D; + preciseNum *= 10M; factor++; } return factor; diff --git a/UnitTests/Tests/Utils/RandomUtilTests.cs b/UnitTests/Tests/Utils/RandomUtilTests.cs index 2a52e541..51d0f4b1 100644 --- a/UnitTests/Tests/Utils/RandomUtilTests.cs +++ b/UnitTests/Tests/Utils/RandomUtilTests.cs @@ -188,7 +188,7 @@ public sealed class RandomUtilTests [DataRow(0.0001, 4)] [DataRow(0, 0)] [DataRow(10000000, 0)] - [DataRow(0.000_000_000_000_1D, 13)] + [DataRow(0.000_000_000_000_000_000_000_000_1D, 25)] public void GetNumberPrecision_WithDoubles_ReturnsDecimalPoints(double value, int decimalPoints) { Assert.AreEqual(decimalPoints, _randomUtil.GetNumberPrecision(value));