c# - C# 将数字四舍五入为 double 的任意数字
问题描述
我希望将双精度数舍入到小数点右侧或左侧的任意数字。
Math.Round
仅适用于小数点右侧的数字,我需要能够四舍五入到最接近 10s、100s、1000s 的值...
所需输入/输出示例:
Round(1234.56789, 0) == 1235
Round(1234.56789, -3) == 1234.568
Round(1234.56789, 3) == 1000
这个问题与C# 中小数点后两位的 Round double 不同?
因为我需要将值四舍五入到小数点左侧的位置,例如1,2345,000
四舍五入到最接近的位置10,000
解决方案
如果我们利用10
数字位置的幂,我们可以将双精度数舍入到任意精度
public double RoundToDigit(double i, int digitPosition)
{
double precision = Math.Pow(10, digitPosition);
double result = Math.Round(i / precision, 0) * precision;
return result;
}
推荐阅读
- visual-studio-code - 在 vs 代码中删除文件中的导航器
- java - 如何在方法上测试 Spring 的 Cacheable?
- python - 在 matplotlib 中将字符串转换为浮点数会产生错误
- mongodb - mongodb 奇怪的 RECOVERY 数据库突然出现
- c# - C#位图和图形,内存问题和在内存中存储屏幕截图
- python - 过滤 DataFrame 离开行,其中 Needle 是 columnB 中存在的列表的一部分
- r - 根据 Rstudio 中现有列的字符串值添加新列
- vue.js - 将所见即所得库附加到动态生成的输入
- node.js - 续集别名
- delphi - Delphi 和 Indy 兼容性