最大長の編集テキストがあります
私の質問は...
Windows Calc のように maxlength よりも大きな数値を表示するにはどうすればよいですか??
例:
1.34223423423434e+32
edittext maxlengthでこれが欲しい
編集:可能であれば、数学演算に問題なく表示およびストア番号にこれが必要です
ありがとう
最大長の編集テキストがあります
私の質問は...
Windows Calc のように maxlength よりも大きな数値を表示するにはどうすればよいですか??
例:
1.34223423423434e+32
edittext maxlengthでこれが欲しい
編集:可能であれば、数学演算に問題なく表示およびストア番号にこれが必要です
ありがとう
これが、BigIntegerクラス (または非整数の場合はBigDecimal ) の目的です。
これらのクラスは数値を任意の精度で格納し、標準の算術演算を可能にします。数値の正確な値を文字列として取得し、必要に応じてフォーマットすることができます (たとえば、長さをトリミングします)。
(これらのクラスをNumberFormatインスタンスで使用できるように見えるかもしれませんが、数値がdouble
.
これを使用する例を次に示します。
// Create a BigDecimal from the input text
final String numStr = editText.getValue(); // or whatever your input is
final BigDecimal inputNum = new BigDecimal(numStr);
// Alternatievly you could pass a double into the BigDecimal constructor,
// though this might already lose precison - e.g. "1.1" cannot be represented
// exactly as a double. So the String constructor is definitely preferred,
// especially if you're using Double.parseDouble somewhere "nearby" as then
// it's a drop-in replacement.
// Do arithmetic with it if needed:
final BigDecimal result = inputNum.multiply(new BigDecimal(2));
// Print it out in standard scientific format
System.out.println(String.format("%e", result));
// Print it out in the format you gave, i.e. scientific with 14dp
System.out.println(String.format("%.14e", result));
// Or do some custom formatting based on the exact string value of the number
final String resultStr = result.toString();
System.out.println("It starts with " + result.subString(0, 3) + "...");
出力に必要な形式が正確にはわかりませんが、それが何であれ、バッキングストアとして BigDecimals を使用して管理できるはずです。