四舍五入到最接近的 10 乘法

Round to nearest 10 multiplication

我的 sql 代码有一点数学问题。我希望能够使用数学公式在我的代码中计算出以下内容,如果有人知道我很想知道的话。

任意数字 1->99 : 10

任意数字 100->999 : 100

任意数字 1000->9999 : 1000 ...

有没有办法仅从该值计算出 10 的乘数?我觉得这应该是一个简单的公式,但我似乎无法理解。

谢谢

你只需要原木和它们的对立面(力量)...

power(10, floor(log10(x)))

如下...

log10(99) = 1.9956351946

floor(1.9956351946) = 1

power(10, 1) = 10

但是,这确实假设您的示例是错误的并且 1 -> 9 应该 "round" 到 1...

log10(9) = 0.95424250943

floor(0.95424250943) = 0

power(10, 0) = 1

这个怎么样?

SELECT POWER(10, CONVERT(INT, LOG10(@Input)))

它采用输入值的对数底数 10(returns 指数的值,您必须将 10 提高到该值才能获得输入值),然后它去掉小数部分,只留下整数,然后将 10 乘以该次方。