Java 按“双”分开&引用;在爪哇

Java 按“双”分开&引用;在爪哇,java,split,double,Java,Split,Double,我有一个双倍号码是“547.123456” 我只想用这个双精度作为“547.1”,就像在“.”之后只有一个数字一样 我该怎么做 非常容易:) 每个精度都有一个通用的解决方案,您可以指定自己的精度,如下所示: DecimalFormat decimalFormat = new DecimalFormat("#.#"); System.out.println(decimalFormat.format(<your double>)); DecimalFormat DecimalForma

我有一个双倍号码是“547.123456”

我只想用这个双精度作为“547.1”,就像在“.”之后只有一个数字一样

我该怎么做

非常容易:)


每个精度都有一个通用的解决方案,您可以指定自己的精度,如下所示:

DecimalFormat decimalFormat = new DecimalFormat("#.#");
System.out.println(decimalFormat.format(<your double>));
DecimalFormat DecimalFormat=新的DecimalFormat(“#.#”);
System.out.println(decimalFormat.format());
使用BigDecimal

double f=547.123456;
BigDecimal d=new BigDecimal(f);
System.out.print( d.setScale(1, RoundingMode.FLOOR));

如果您想转移一个值,例如

  47.12345 -> 47.1
  47.56789 -> 47.5 // <- not 47.6!
  47.12345 -> 47.1
  47.56789 -> 47.6 // <- not 47.5!
如果要对某个值进行四舍五入,例如

  47.12345 -> 47.1
  47.56789 -> 47.5 // <- not 47.6!
  47.12345 -> 47.1
  47.56789 -> 47.6 // <- not 47.5!

使用字符串。格式

String.format("%.1f",547.123456);

我认为这是一种最简单的方法。

将其四舍五入到一个小数点,或者仅仅是第一个小数点?您会发现这个问题并给出有趣的答案:-[在Java中将双精度四舍五入]:[您想将其四舍五入还是表示它(打印它)这样吗?你可以继续把它当作一个双精度数,并使用十进制格式只显示一个小数点。如果你想去掉第一个小数点后的所有内容(而不是四舍五入的话)-技巧一点:
d=((int)(d*10))/10.0
谢谢,它对我来说真的很有用。即使是x+1也会溢出…是的,还有?你的代码不能处理任何大于Integer.MAX_值的double,它比可能的最大double小很多。即使没有
int
强制转换,语句也会溢出非常大的double。你至少应该在这里强制转换到long。@Radiodef-真,好想法。现在它位于错误的位置。.P+1这是确保您始终使用
547.1
@skiwi的唯一可靠方法,除了上面的代码段使用双精度创建BigDecimal,在这种情况下,精度已经丢失。只应使用带字符串的构造函数。@gizmo精度不会丢失-如下所示和原来的双精度一样好。。。
String.format("%.1f",547.123456);