当前位置: 首页 > 面试题库 >

使用DecimalFormat格式化数字

子车青青
2023-03-14
问题内容

我正在尝试使用DecimalFormat格式化价格,但这不适用于所有版本。

DecimalFormat df = new DecimalFormat("0.##")
df.format(7.8)
df.format(85.0)

版画

7.80

85

但是“ 7.79999”的格式设置为“ 7.8”,而不是“ 7.80”。我尝试过这种方式

DecimalFormat df = new DecimalFormat("0.00")

强制两个dp,但是“ 85.0”的格式设置为“ 85.00”而不是“ 85”!

有没有一种方法可以捕获所有变化,以便将价格打印为#,##或#。##?例如:

5、55、5.55、5.50、500、500.40


问题答案:

这似乎无法通过一个解决formatter。我建议您使用"0.00"format并替换".00"为空字符串。

public static String myFormat(double number) {
  DecimalFormat df = new DecimalFormat("0.00");
  return df.format(number).replaceAll("\\.00$", "");
}


 类似资料:
  • 问题内容: 但是我没有错。这是我的代码 该方法采用Object类型参数,因此这就是为什么我传递了一个给出异常的String对象的原因 线程“主”中的异常java.lang.IllegalArgumentException:无法 将给定对象格式化为数字。 但是,当我给出double值作为参数时,程序运行良好。但是,如果使用类型实参定义该方法,为什么在传递a 时却得到异常而在传递时却没有得到异常? 问

  • 这可能看起来像是一个重复的问题,但我在下面的所有链接中都尝试了,不能得到一个适当的答案。 无法将给定对象格式化为数字组合框

  • 问题内容: 我想在我们的jsp页面中格式化一些数字。 首先,我定义了一些资源 ...... 问题1: 我想知道“#”和“ 0”的含义是什么? 0.00,#0.00,##。00,### 0.00 谁能告诉我它们之间的区别?谢谢! 问题2: 如果我在动作BigDecimal number1中定义了BigDecimal类型; 然后我的页面应该使用一种格式来显示此值, 请忽略number <0 问题3:

  • 我一直在从传感器读数中读取时间戳值,但由于它们是以纳秒为单位提供的,所以我想我会将它们转换为double并进行转换。得到的数字是一个17位的值,加上分隔符。 这是DecimalFormat错误/限制吗?还是我做错了什么?

  • 问题内容: ,此模式的目的是什么?我相信这有两个目的 分组数字,即千位分隔符 如果缺少小数点,则在小数点后附加两个零,将23转换为23.00 但是为什么在小数点之前而不是小数点之前呢?这个零的目的是什么?谢谢您的帮助。 问题答案: 来自:http : //docs.oracle.com/javase/7/docs/api/java/text/DecimalFormat.html 所以当没有数量未显

  • number(string $format): self string $format $config = [ 'path' => './tests' ]; ​ $fileObject = new \Vtiful\Kernel\Excel($config); ​ $fileObject = $fileObject->fileName('tutorial.xlsx'); $fileHan