【问题标题】:How to set particular number of Digits in double/float primitive type in java?java - 如何在java中以double/float原始类型设置特定数量的数字?
【发布时间】:2022-01-02 14:27:13
【问题描述】:

我想要 double/float 原始类型的特定位数。有没有办法做到这一点?

例如:(固定为6位)

  1. 如果我们有 12.666666667,则输出为 12.6667
  2. 如果我们有 5.6666666667,则输出为 5.66667
  3. 但是,如果我们有 9.00000000,则输出仅为 9.*

为了,更清楚的理解,我附上一张图片。enter image description here

如何复制我从下面提到的 java 代码中得到的相同输出:

#include<iostream>
using namespace std;
int main()
{
  float num = 9.34333666666663;
  float num2 = 12.0000000
  cout << num;
  cout << num2;
  return 0;
}

输出:-

9.34334
12

【问题讨论】:

标签: java floating-point decimal precision


【解决方案1】:

需要考虑两件事。一个是如果您需要精确的精度,因为浮点运算可能无法满足您的要求。有关详细信息,请参阅 BigDecimal 类。另一个是您正在尝试做的事情:显示具有一定小数位数的数字。您可以使用String.format 完成此操作。例如

double num = 5.666666666;
String formatted = String.format("%.5f", num);

System.out.println(formatted)

会输出

5.66667

【讨论】:

  • 但是如果我们有 12.6666667 呢?然后,上面的代码将输出为 12.66667,但输出要求为 12.6667(总共 6 位数字)。如果是 9.00000000,则只需要 9 作为输出。
【解决方案2】:
import java.text.DecimalFormat;

public class rounding {
    public static void main(String[] args) {
        double num = 23.122345899;
        double rounded = Math.round(num * 1000000) / 1000000.0;
        System.out.println(rounded);
    }
}

【讨论】:

    猜你喜欢
    • 2023-03-16
    • 1970-01-01
    • 2013-10-05
    • 1970-01-01
    • 1970-01-01
    • 2011-11-15
    • 1970-01-01
    • 1970-01-01
    • 2011-09-04
    相关资源
    最近更新 更多