删除' .0'来自double,但保留其他所有可能性

时间:2017-04-02 03:51:23

标签: java formatting double

我在Stackoverflow上看到了一堆问题,指的是在双重后隐藏.0,但每个答案都说使用DecimalFormat并执行#.#来隐藏它。除了这不是我想要的。

对于双重不仅仅以.0结尾的每一种可能性,我希望它们是这样的。除非它在.0结束,否则将其删除。换句话说,我希望始终保持精确度,除非它以.0结束。

示例:

0.0000000000000000042345470000230 -> 0.0000000000000000042345470000230
0.4395083451 -> 0.4395083451
46547453.00024235 -> 46547453.00024235

435.0 -> 435

有没有办法实现这个目标?

进一步的例子:

这个问题here有我所说的答案类型:

  

使用DecimalFormat

double answer = 5.0;
DecimalFormat df = new DecimalFormat("###.#");
System.out.println(df.format(answer));

上面的###.#表示我将显示前三位数,一个句点,然后是第一个数字。无论我的价值如何,只会对第一个小数进行格式化。

1 个答案:

答案 0 :(得分:2)

实际上,它根本不复杂。只需检查一下(它甚至可以为您提供最精确的数字):

fabric.Object.prototype.objectCaching = false;
var canvas = new fabric.Canvas('canvas');

var triangle = new fabric.Triangle({
   fill: 'green',
   left: 200,
   top: 200,
   padding: 5,
   hasBorders: false,
   cornerColor: 'black'
});

canvas.add(triangle);
canvas.renderAll();

triangle.setControlsVisibility({
  tr: false,
  br: false,
  bl: false,
  ml: false,
  mt: false,
  mr: false,
  mb: false,
  mtr: false
});

//Square root of 5 will give you a lot of decimals BigDecimal d1 = new BigDecimal(sqrt(5)); //5 will give you none BigDecimal d2 = new BigDecimal(5); //Print and enjoy System.out.println(d1.stripTrailingZeros()); System.out.println(d2.stripTrailingZeros()); 将删除普通0的任何痕迹,但如果存在其他数字,请保留格式。