2017-07-07 5 views
0

Ich möchte die log10 unteren und oberen Werte einer Zahl berechnen. Z.B. Für val=4 sollte 1 als niedriger und 10 als oberen log10 Wert zurückgegeben werden.Berechne unteren und oberen log10 Wert von Zahlen

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

Dies sollte das Ergebnis sein:

expected result

Wie kann ich das erreichen und welche Funktionen benötigt werden? Die Funktion log10 berechnet nur den Wert von val auf der Basis von 10

Antwort

2

ich kein Mathe Ph.D. bin, aber log10 tut, was log10 sagt, es ist, nämlich die Log-Basis 10 eines berechnen Nummer. Ich habe noch nie von "lower log10" oder "outer log10" gehört und auch Google nicht, soweit ich das beurteilen kann.

Es klingt wie Sie wollen, ist die Zahl, die einen ganzzahligen Logarithmus (Basis 10) haben würde, die kleiner oder gleich der angegebenen Zahl ist, und die Zahl, die einen ganzzahligen Logarithmus (Basis 10) haben würde als oder gleich der angegebenen Anzahl. (Was ist, wenn die angegebene Zahl genau 10 ist, sagen Sie nicht, was zu tun ist).

leicht genug getan durch erneutes Potenzieren nach Boden/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; 
Verwandte Themen