我希望将双精度舍入到小数点右侧或左侧的任意数字。
Math.Round
仅适用于小数点右侧的数字,我需要能够四舍五入到最接近的 10s、100s、1000s、...
所需输入/输出的示例:
Round(1234.56789, 0) == 1235
Round(1234.56789, -3) == 1234.568
Round(1234.56789, 3) == 1000
这个问题不同于Round double in two decimal places in C#?
因为我需要将值四舍五入到小数点左侧的位置,例如 1,2345,000
四舍五入到最接近的 10,000
答案 0 :(得分:0)
如果我们将 10
取数字位置的幂,我们可以将双精度四舍五入到任意精度
public double RoundToDigit(double i, int digitPosition)
{
double precision = Math.Pow(10, digitPosition);
double result = Math.Round(i / precision, 0) * precision;
return result;
}