gpt4 book ai didi

c# - 舍入到下一个最高位置的数字

转载 作者:太空宇宙 更新时间:2023-11-03 18:21:09 24 4
gpt4 key购买 nike

我正在尝试创建一个函数,该函数将根据最大位数字(最左边的数字)返回下一个最高(因为缺少更好的术语)“圆形”数字。

例如:

 17     >  20  
328 > 400
18564 > 20000

//Already round numbers will stay the same:
500 > 500

我知道我可以做这样的事情:

int customRound(int i)
{
string s = i.ToString();
if (int.Parse(s.Substring(1)) > 0)
{
string greatestDigit = s.Substring(0, 1);
string digit = (int.Parse(greatestDigit) + 1).ToString();
return int.Parse(digit + string.Empty.PadRight(s.Length - 1, '0'));
}
return i;
}

但这感觉真的很老套,我相信有一种更优雅、更数学化的方法来做到这一点。

最佳答案

您可以使用 Math.Log10 确定数字的数量级(前一个数字是 10 的幂),然后四舍五入到它的下一个倍数:

int customRound(int i)
{
var digits = (int)Math.Floor(Math.Log10(i));
var unit = (int)Math.Pow(10, digits);
return (int)(Math.Ceiling((double)i / unit) * unit);
}

关于c# - 舍入到下一个最高位置的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53417408/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com