四舍五入到最接近的 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 乘以该次方。
我的 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 乘以该次方。