提问人:Dilshod K 提问时间:2/17/2022 最后编辑:marc_sDilshod K 更新时间:5/5/2023 访问量:693
如何最有效地缩放和设置十进制精度
How is most performant way to scale and set precision of decimal
问:
我有一个设置比例和精度的类:
public class MyDecimalConverter
{
public int Scale { get; }
public int Precision { get; }
public MyDecimalConverter(int scale, int precision)
{
Scale = scale;
Precision = precision;
}
public decimal ConvertDecimal(decimal decimalValue)
{
return //Calculated value
}
}
此外,它还有方法。我想根据比例和精度计算提供的十进制值。例如,当ConvertDecimal
精度 = 5
比例 = 4
提供的十进制值 = ,
123456789
该方法应返回
1,2345
下面是关于什么是比例和什么是精度的屏幕截图:
我在数学课上没有找到这种功能。所以我想知道一种正确且高性能的方法来制作这种功能
答:
1赞
Tomov Nenad
5/5/2023
#1
我发现您可以同时设置精度和比例的唯一方法是:
public static decimal SetPrecisionAndScale(this decimal number, int precision, int scale)
{
System.Data.SqlTypes.SqlDecimal x;
x = new System.Data.SqlTypes.SqlDecimal(number);
var convertedNumber = System.Data.SqlTypes.SqlDecimal.ConvertToPrecScale(x, precision, scale);
return convertedNumber.Value;
}
我不确定性能是否苛刻,但我在生产中使用此代码并且运行良好(没有打嗝、内存泄漏或性能瓶颈)。
评论
scale = 4
12345.6789
precision=5; scale=0;
SqlDecimal
AdjustScale