java - Android十进制格式化,如何根据不同的指数值进行十进制格式化?

标签 java android numbers number-formatting

我正在开发单位转换应用程序,需要针对不同的指数值进行适当的十进制格式设置。

  1. 假设如果答案是 1e-6 答案应该是 0.000001
  2. 假设答案是 2.1345e3,答案应该是 2134.5
  3. 假设如果答案是 2.13456e-9,答案应保留 2.13456e-9
  4. 假设如果答案是 1987.345e-3,答案应该是 1.98734e-6

我已附上 iPhone 和 Android 十进制格式图像。 ios and android number formatting

ios and android number formatting

正如您在 android 中看到的,所有值的格式都是相同的,但我需要针对不同的值使用不同的格式。

如果需要更多信息,请告诉我。以下是我在android中格式化的代码,所有值都是 double 的。

 DecimalFormat df = new DecimalFormat("######.#####E+0");
 String answer = df.format(value);
 return answer;

谢谢

最佳答案

由于您想要不同大小的不同格式,您可以将连续体划分为不同的区域,并将每个区域与其格式相匹配。例如(我不确定模式是否有意义,但这个想法很简单):

public String myFormat(double value) {
    String pattern;

    if (value > 1) {
        pattern = "######.#E+0";
    } else if (value > 0.01) {
        pattern = "#.#####E+3";
    } else {
        pattern = "######.#####E+0";
    }

    return new DecimalFormat(pattern).format(value);
}

关于java - Android十进制格式化,如何根据不同的指数值进行十进制格式化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42698805/

相关文章:

java - 如何从 Java 解锁 Oracle 用户的帐户?

java - Java 平台上 TinyMCE 的文件管理器

java - 如何在 android 中定位 passwordToggleDrawable?

java - 安卓查询参数

android - 关闭 expandedView 后 EditText 消失

android - 如何在 android 的 lottie 动画中创建一个按钮?

android gradle 测试路径

c - 尝试使用整个 rand() 表是个好主意吗?

c++ - Qt rand() 不能正常工作

c - 如何把一个数改成能被8整除