Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/200.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 小数点后仅显示两位数_Java_Android_Number Formatting - Fatal编程技术网

Java 小数点后仅显示两位数

Java 小数点后仅显示两位数,java,android,number-formatting,Java,Android,Number Formatting,如何获取小数点后仅两位数的双精度值 比如说 如果 此代码生成5.81403333 但我只想要5.81 那我该怎么办呢?使用 DecimalFormat是NumberFormat的一个具体子类,用于格式化 十进制数。它有各种各样的功能设计来实现它 可以在任何语言环境中解析和格式化数字,包括支持 用于西文、阿拉伯文和印度文数字。它还支持不同的应用程序 数的种类,包括整数(123)、定点数 (123.4%)、科学记数法(1.23E4)、百分比(12%)和货币 数额(123美元)。所有这些都可以本地化

如何获取小数点后仅两位数的双精度值

比如说

如果

此代码生成
5.81403333

但我只想要
5.81

那我该怎么办呢?

使用

DecimalFormat是NumberFormat的一个具体子类,用于格式化 十进制数。它有各种各样的功能设计来实现它 可以在任何语言环境中解析和格式化数字,包括支持 用于西文、阿拉伯文和印度文数字。它还支持不同的应用程序 数的种类,包括整数(123)、定点数 (123.4%)、科学记数法(1.23E4)、百分比(12%)和货币 数额(123美元)。所有这些都可以本地化

代码片段-

输出-

5.81


怎么样
String.format(“%.2f”,i2)

在将一个数字格式化为字符序列时,开发人员头上应该弹出的第一件事应该是注意这样的细节,如do,可以反转操作

另一方面是提供适当的结果。所以你想把数字截断或四舍五入

所以在你开始之前,你应该问问你自己,我对价值感兴趣与否


要实现你的目标,你有多种选择,但大多数都提到和,但我只是建议你看看。

我认为最好最简单的解决方案是(亲吻):


在这里,我将向您演示如何缩短十进制数。在这里,我将把它缩短到小数点后的4个值

  double value = 12.3457652133
  value =Double.parseDouble(new DecimalFormat("##.####").format(value));

许多其他答案只做格式化。此方法将返回,而不仅仅是打印格式

double number1 = 10.123456;
double number2 = (int)(Math.round(number1 * 100))/100.0;
System.out.println(number2);


您不需要toString(),format已返回字符串。还请访问“如果我想要双精度格式怎么办?”,它的双精度值可以通过使用
DecimalFormat
格式化为所需的字符串表示形式。嗯,我没有100%理解你的问题。它大部分都按照我的要求工作。但在我的例子中,我需要小数点后的一位数。因此使用了新的十进制格式(“###.#”)之类的格式,但是,它不适用于小数点后加0的情况,比如35.0,因为它显示为35。但是,我需要类似35.0String amt=new DecimalFormat(“###.###”)的格式。格式(448.4);->它只给出448.4字符串amt=new DecimalFormat(“##.00”)。格式(448.4);->它给出了448.40我相信他对如何只显示2个有效数字感兴趣。另外,由于浮点运算的方式,您的解决方案不会精确地产生
5.81
,而是类似
5.81000000001
之类的结果。我认为这是不可能的!因为Math.round-返回整数,我们将其转换为浮点值。浮点值(581.0)除以100后如何可以是5.81000000001?你有描述你观点的测试用例吗?可能这是一个程序员的简单代码,它在危急的情况下帮助了我。感谢老兄…1对uThis方法的upvote将非常容易出现浮点数学错误,正如@Petriborg所指出的,这个问题并不是这个问题的重复,而是关于格式的问题;这个问题是关于在
double
中更改值的问题。与十进制格式lmao相比,键入要少得多。谢谢。这可能会根据区域设置使用逗号格式化字符串,例如result=5,32而不是5.32。我使用了
string.format(locale.US,“%.2f”,i2)
对我有效。谢谢,把手术倒过来?相反,在一个设计良好的系统中,应该只为系统输出将数字格式化为字符串,而不需要将其反转。对于将文本设置为文本视图,例如:double value=12.3457652133 Textview.setText(新的十进制格式(“##.###”)format(double.parseDouble(value));这有一个限制,您应该确保
DecimalFormat
使用的本地返回的是带点而不是逗号的十进制值,否则
parseDouble
将抛出
NumberFormatException
工作正常,没有错误这对我很有效,谢谢。也对我有效
i=348842.
double i2=i/60000;
DecimalFormat dtime = new DecimalFormat("#.##"); 
i2= Double.valueOf(dtime.format(time));
v.setText(String.valueOf(i2));
double i = 348842;
double i2 = i/60000;
float k = (float) Math.round(i2 * 100) / 100;
  double value = 12.3457652133
  value =Double.parseDouble(new DecimalFormat("##.####").format(value));
double number1 = 10.123456;
double number2 = (int)(Math.round(number1 * 100))/100.0;
System.out.println(number2);