计算数字的上下log10值

Calculate lower and upper log10 value of numbers

我想计算一个数字的 log10 上下限值。例如。对于 val=4,它应该 return 1 作为较低的 log10 值,10 作为较高的 log10 值。

data a;
  infile datalines;
  input val;
  datalines;
4
27
38765
983434
;
run;

这应该是结果:

如何实现,需要哪些功能?函数 log10 只计算 val 以 10 为底的值。

我不是数学家 Ph.D,但是 log10 按照 log10 的说法去做,即计算一个数字的对数底数 10。据我所知,我从未听说过 "lower log10" 或 "upper log10",也没有听说过 Google。

听起来您想要的是小于或等于给定数字的整数对数(以 10 为底)的数字,以及具有整数对数(以 10 为底)的数字大于或等于给定的数字。 (如果给的数字刚好是10,你不说怎么办)

通过在 floor/ceil:

之后重新取幂很容易完成
data _null_;
  input x;
  l_x = 10**(floor(log10(x)));
  u_x = 10**(ceil(log10(x)));
  put x= l_x= u_x=;
datalines;
4
27
38765
983434
;;;;
run;