如何将数字格式化为一定数量的小数位加逗号分隔符?

Posted

技术标签:

【中文标题】如何将数字格式化为一定数量的小数位加逗号分隔符?【英文标题】:How to format Number to certain number of Decimal Places plus comma separators? 【发布时间】:2014-09-30 19:24:40 【问题描述】:

这与我之前的问题有关,可以在以下位置找到:

Math equation result loses decimals when displayed

在我的作业中,我们必须计算等腰梯形的周长。周长需要格式化为 4 位小数。如果之后的结果 小数位全为零,则不显示零。 (例如:结果是 12.000000 什么 将显示为 12。)此外,如果结果在小数点前大于 1000,则 必须显示逗号。 (示例:结果为 1234.56781 将显示的内容是 1,234.5678)。我们需要使用十进制格式类。这是我的代码:

//Kyle Collins
/*This program calculates the area and perimeter of an isosceles trapezoid, as well
as the diagonal of the isosceles trapezoid.
*/

import java.util.Scanner;
import java.lang.Math;
import java.text.*;

public class CSCD210Lab2

   public static void main (String [] args)
   
      Scanner mathInput = new Scanner(System.in);

      //declare variables

      double topLength, bottomLength, height,perimPt1,perimPt2;


      //Get user input
      System.out.print("Please Enter Length of the Top of Isosceles Trapezoid: ") ;
      topLength = mathInput.nextDouble() ;
      mathInput.nextLine() ;

      System.out.print("Please Enter Length of the Bottom of Isosceles Trapezoid: ") ;
      bottomLength = mathInput.nextDouble() ;
      mathInput.nextLine() ;

      System.out.print("Please Enter Height of Isosceles Trapezoid: ") ;
      height = mathInput.nextDouble() ;
      mathInput.nextLine() ;

      perimPt1 = ((bottomLength - topLength)/2);
      perimPt2 =(Math.sqrt(Math.pow(perimPt1,2) + Math.pow(height,2))); 

      double trapArea = ((topLength + bottomLength)/2*(height));
      double trapDiag = (Math.sqrt(topLength*bottomLength + Math.pow(height,2)));
      double trapPerim = 2*(perimPt2) + (topLength + bottomLength);

      //Print the results
      System.out.println();
      System.out.println("The Area of the Isosceles Trapezoid is: "+trapArea);
      System.out.printf("The Diagonal of the isosceles trapezoid is: %-10.3f%n",trapDiag);
      System.out.printf("The Perimeter of the Isosceles Trapezoid is: "+trapPerim );
   

我将如何格式化周边的打印输出,以便它使用十进制格式类并满足要求?

【问题讨论】:

【参考方案1】:

使用和String.format()

String.format("%.2f", (double)value);

有多种方法来定义它,请看你需要什么。 你也可以使用Decimal Format

【讨论】:

我是 java 新手,那会使用 formatdecimal 类吗? 我首先给出的答案是在 Sting api 检查格式方法中。【参考方案2】:

使用DecimalFormat 格式化数字:

DecimalFormat df = new DecimalFormat("#,###.####", new DecimalFormatSymbols(Locale.US));
System.out.println(df.format((double)12.000000));
System.out.println(df.format((double)1234.56781));
System.out.println(df.format((double)123456789.012));

这里的这种模式只需要在小数点后 4 位之后进行剪切,就像您建议的第二个示例一样。如果您不希望 new DecimalFormat("", new DecimalFormatSymbols(Locale.US)) 也可以。

(需要设置格式符号,否则将使用当前语言环境的符号,这些符号可能与设计符号不同)

输出将是

12
1,234.5678
123,456,789.012

【讨论】:

以上是关于如何将数字格式化为一定数量的小数位加逗号分隔符?的主要内容,如果未能解决你的问题,请参考以下文章

如何在laravel中格式化为包含逗号和点的十进制数?

在 Python 2 中使用逗号分隔符格式化数字并舍入到小数点后 2 位?

使用自定义组和小数分隔符将数字格式化为字符串而不更改精度

ActionScript 3 将数字格式化为字符串 - 使用小数和千位分隔符

将数字格式化为字符串-带小数和千位分隔符

小数的 SQL 格式,用逗号表示小数,仅用于数字