Java 有没有办法以指数格式显示数字

Java 有没有办法以指数格式显示数字,java,android-studio,Java,Android Studio,我有一个很大的数字,我不想在EditText中显示它,例如1.1E12。我想以如下格式显示它:1.1 x 10^12(见图)。有办法做到这一点吗 我想你是在问如何在“数学教科书”科学记数法中生成表示数字的字符串,比如6.02214076×10 您可以使用将数字拆分为基数和指数,然后将指数的数字转换为Unicode上标字符: public static String formatInScientificNotation(double value) { NumberFormat baseFo

我有一个很大的数字,我不想在EditText中显示它,例如1.1E12。我想以如下格式显示它:1.1 x 10^12(见图)。有办法做到这一点吗


我想你是在问如何在“数学教科书”科学记数法中生成表示数字的字符串,比如6.02214076×10

您可以使用将数字拆分为基数和指数,然后将指数的数字转换为Unicode上标字符:

public static String formatInScientificNotation(double value) {
    NumberFormat baseFormat = NumberFormat.getInstance(Locale.ENGLISH);
    baseFormat.setMinimumFractionDigits(1);

    if (Double.isInfinite(value) || Double.isNaN(value)) {
        return baseFormat.format(value);
    }

    double exp = Math.log10(Math.abs(value));
    exp = Math.floor(exp);

    double base = value / Math.pow(10, exp);

    String power = String.valueOf((long) exp);

    StringBuilder s = new StringBuilder();
    s.append(baseFormat.format(base));
    s.append("\u00d710");

    int len = power.length();
    for (int i = 0; i < len; i++) {
        char c = power.charAt(i);
        switch (c) {
            case '-':
                s.append('\u207b');
                break;
            case '1':
                s.append('\u00b9');
                break;
            case '2':
                s.append('\u00b2');
                break;
            case '3':
                s.append('\u00b3');
                break;
            default:
                s.append((char) (0x2070 + (c - '0')));
                break;
        }
    }

    return s.toString();
}
公共静态字符串格式科学表示法(双值){
NumberFormat baseFormat=NumberFormat.getInstance(Locale.ENGLISH);
baseFormat.setMinimumFractionDigits(1);
if(Double.isInfinite(值)| | Double.isNaN(值)){
返回baseFormat.format(值);
}
double exp=Math.log10(Math.abs(value));
exp=数学地板(exp);
双基=数值/数学功率(10,exp);
字符串幂=String.valueOf((长)exp);
StringBuilder s=新的StringBuilder();
s、 追加(baseFormat.format(base));
s、 追加(“\u00d710”);
int len=power.length();
对于(int i=0;i
我想你是在问如何在“数学教科书”科学记数法中生成表示数字的字符串,比如6.02214076×10

您可以使用将数字拆分为基数和指数,然后将指数的数字转换为Unicode上标字符:

public static String formatInScientificNotation(double value) {
    NumberFormat baseFormat = NumberFormat.getInstance(Locale.ENGLISH);
    baseFormat.setMinimumFractionDigits(1);

    if (Double.isInfinite(value) || Double.isNaN(value)) {
        return baseFormat.format(value);
    }

    double exp = Math.log10(Math.abs(value));
    exp = Math.floor(exp);

    double base = value / Math.pow(10, exp);

    String power = String.valueOf((long) exp);

    StringBuilder s = new StringBuilder();
    s.append(baseFormat.format(base));
    s.append("\u00d710");

    int len = power.length();
    for (int i = 0; i < len; i++) {
        char c = power.charAt(i);
        switch (c) {
            case '-':
                s.append('\u207b');
                break;
            case '1':
                s.append('\u00b9');
                break;
            case '2':
                s.append('\u00b2');
                break;
            case '3':
                s.append('\u00b3');
                break;
            default:
                s.append((char) (0x2070 + (c - '0')));
                break;
        }
    }

    return s.toString();
}
公共静态字符串格式科学表示法(双值){
NumberFormat baseFormat=NumberFormat.getInstance(Locale.ENGLISH);
baseFormat.setMinimumFractionDigits(1);
if(Double.isInfinite(值)| | Double.isNaN(值)){
返回baseFormat.format(值);
}
double exp=Math.log10(Math.abs(value));
exp=数学地板(exp);
双基=数值/数学功率(10,exp);
字符串幂=String.valueOf((长)exp);
StringBuilder s=新的StringBuilder();
s、 追加(baseFormat.format(base));
s、 追加(“\u00d710”);
int len=power.length();
对于(int i=0;i
@Software Engineer它没有回答我的问题,因为我不想用E来显示它。我希望有好的输出,就像孩子们使用指数时的数学书一样。正如我在图中所示,我认为它是这样的——它说没有任何方法可以使用内置函数来实现这一点。你必须写代码。如果你想在这里得到帮助,那么你必须先自己尝试一下,当你遇到一些困难时,请我们提供一个简单的例子。@SoftwareEngineer我知道我应该提供一些代码,但我甚至不知道如何开始,所以如果你有任何想法,我会感谢任何帮助,这不是StackOverflow的真正用途。我们帮助人们解决他们在代码方面遇到的问题,但我们不经常为他们编写代码。这个问题很可能在当前状态下结束。这是因为如果你不知道从哪里开始,那么我们必须先教你编程的基础知识,这对于这样一个论坛来说太难了。@Software Engineer它没有回答我的问题,因为我不想用E来显示它。我希望有好的输出,就像孩子们使用指数时数学书中的输出一样。正如我在图中所示,我认为它是这样的——它说没有任何方法可以使用内置函数来实现这一点。你必须写代码。如果你想在这里得到帮助,那么你必须先自己尝试一下,当你遇到一些困难时,请我们提供一个简单的例子。@SoftwareEngineer我知道我应该提供一些代码,但我甚至不知道如何开始,所以如果你有任何想法,我会感谢任何帮助,这不是StackOverflow的真正用途。我们帮助人们解决他们在代码方面遇到的问题,但我们不经常为他们编写代码。这个问题很可能在当前状态下结束。这是因为如果你不知道从哪里开始,那么我们必须先教你编程的基础知识,这对于这样一个论坛来说要求太高了。