Ich habe keinen vorzeichenlosen long
Wert. Alles, was ich tun möchte, es nach einem Punkt des Doppel gesetzt wird (in Dezimaldarstellung), wie folgt aus:Effizientes Setzen von Ganzzahl nach Dezimalpunkt in Java
MyLong = 1024
dotLong = 0,1024
ich es bezogen auf die Menge tun könnte von Ziffern, die ich gescannt habe, während ich einen Scanner schreibe.
private long scanDecDigits()
{
int digIndex = 0;
char ch;
while (input.remains())
{
ch = input.get();
if (!AS3Char.isDecDigit(ch))
break;
// Push up to 10 digits; ignore rest.
if (i < 10)
numDigits[digIndex++] = ch - '0';
}
decBase = Math.pow(10, digIndex);
long sub = decBase;
long value = 0;
for (digIndex = 0; sub != 0; sub /= 10)
value += numDigits[digIndex++] * sub;
return value;
}
Alternativ funktioniert auch dies:
public class Main
{
public static void main(String[] args)
{
System.out.println(putInDecimal(255));
}
public static double putInDecimal(long lv)
{
return ((double) lv)/((double) tenPow(lv));
}
public static long tenPow(long lv)
{
return (lv < 10) ? 10 :
(lv < 100) ? 100 :
(lv < 1e3) ? (long) 1e3 :
(lv < 1e4) ? (long) 1e4 :
(lv < 1e5) ? (long) 1e5 :
(lv < 1e6) ? (long) 1e6 :
(lv < 1e7) ? (long) 1e7 :
(lv < 1e8) ? (long) 1e8 :
(long) 1e9;
}
}
Tipps.
Sie können 'Math.log10' und' Math.pow' in 'tenPow' anstelle der ternären Operatoren. – Neo
Kompiliert Ihr erster Codeblock überhaupt? Wo sind 'input',' v', 'decBase' usw. definiert? – slider
Einfachere Lösung (wahrscheinlich weniger effizient): 'Double.parseDouble (" 0. "+ Lv)'. –