numberformat-关于NumberFormat的截位问题

问题描述

关于NumberFormat的截位问题

如下是我写的一段代码:
public class NumberTest {

/**
 * @param args
 */
public static void main(String[] args) {
    System.out.println(formatDouble(5.225));
    System.out.println(formatDouble(5.226));
    System.out.println(formatDouble(5.2251));
}

 private static String formatDouble(double data)
  {
    String ret = null;
    try {
      NumberFormat form = NumberFormat.getInstance();
      String mask = "###0.00";
      ((DecimalFormat)form).applyPattern(mask);
      ret = form.format(data);
    } catch (Exception e) {
      e.printStackTrace();
      ret = null;
    }
    return ret;
  }

}
输出结果为:
5.22
5.23
5.23
为什么第一个没有四舍五入呢???

解决方案

formatNumber标签使用的是4舍6入5奇偶"的算法. 要实现"四舍五入",只需要在原有值的基础上再加一个比较小的值即可:
"4舍6入5奇偶":
System.out.println(formatDouble(5.225));
"4舍5入":
System.out.println(formatDouble(5.225+0.0001));

时间: 2024-08-24 09:38:51

numberformat-关于NumberFormat的截位问题的相关文章

把数字格式化为货币字符串 NumberFormat

package com.chapter.four.one.cn; import java.text.NumberFormat; import java.util.Locale; import java.util.Scanner; public class FormatNumber { public static void main(String[] args) { Scanner scan = new Scanner(System.in); System.out.println("请输入一个数字

java使double保留两位小数的多方法 java保留两位小数_java

复制代码 代码如下: mport java.text.DecimalFormat;   DecimalFormat    df   = new DecimalFormat("######0.00");   double d1 = 3.23456  double d2 = 0.0;double d3 = 2.0;df.format(d1); df.format(d2); df.format(d3); 3个结果分别为: 复制代码 代码如下: 3.230.00 2.00 java保留两位小数

java 保留两位小数的几种方法_java

1.代码: import java.math.BigDecimal; import java.text.DecimalFormat; import java.text.NumberFormat; public class format { double f = 111231.5585; public void m1() { BigDecimal bg = new BigDecimal(f); double f1 = bg.setScale(2, BigDecimal.ROUND_HALF_UP)

JSP中遇到的几个常见问题

js|问题 以前记的东西. 1.表单request汉字处理: request.setCharacterEncoding("GB2312") 2.在JSP网页中获取页面的名称: request.getRequestURI() ;//文件名 request.getRequestURL() ;//全部url 3. 页面不保留缓存: response.setHeader("Pragma","No-cache"); response.setHeader(&

JAVA常用类之格式化

日期格式化 在之前的博客中我们使用到了操作日期的一些类,我们发现,如果我们想要获得指定格式的日期字符串可以做到但是很麻烦,下面为大家介绍几种日期的格式化方式. java.text.DateFormat DateFormat是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间.日期/时间格式化子类(如 SimpleDateFormat)允许进行格式化(也就是日期 -> 文本).解析(文本-> 日期)和标准化.将日期表示为 Date 对象,或者表示为从 GMT(格林尼治标准时

php导出中文内容excel文件类实例_php技巧

本文实例讲述了php导出中文内容excel文件类.分享给大家供大家参考.具体如下: <?php class toExcel{ public $link = null; function __construct(){ } /*************************************************************************** * $mapping:数组格式头信息$map=array('No','Name','Email','Age'); * $dat

BigDecimal 专题

import java.math.BigDecimal; import java.math.RoundingMode; import java.text.NumberFormat; public class AddSubtractMultiplyDivide { public static void main(String[] args) { String q1 = "0.06 + 0.01 ="; String q2 = "1.0 - 0.42="; String

JavaWeb 后端 &lt;十三&gt; 之 监听器 JSTL国际化

1. 监听器 1.1   概述 监听器: 主要是用来监听特定对象的创建或销毁.属性的变化的!                     是一个实现特定接口的普通java类! 对象:          自己创建自己用 (不用监听)          别人创建自己用 (需要监听)   Servlet中哪些对象需要监听?          request / session / servletContext          分别对应的是request监听器.session相关监听器.servletCo

JS魔法堂:不完全国际化&amp;本地化手册 之 实战篇

前言  最近加入到新项目组负责前端技术预研和选型,其中涉及到一个熟悉又陌生的需求--国际化&本地化.熟悉的是之前的项目也玩过,陌生的是之前的实现仅仅停留在"有"的阶段而已.趁着这个机会好好学习整理一下,为后面的技术选型做准备.  本篇将于大家一起挽起袖子撸代码:) 如何获取Language tag?  在实现本地化处理前,我们起码先要获取Language tag吧?那么获取方式分为两类 1.直接获取浏览器的Language tag信息  一般来说浏览器语言的版本标示着用户所属或