java格式化小数点问题,四舍五入

2024-06-22 05:32

本文主要是介绍java格式化小数点问题,四舍五入,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  1. 方法一:

    使用DecimalFormat进行数字格式化

  2. public static void test1(DecimalFormat df) {  
  3.         //默认显示3位小数  
  4.         double d = 1.5555555;  
  5.         System.out.println(df.format(d));//1.556  
  6.         //设置小数点后最大位数为5  
  7.         df.setMaximumFractionDigits(5);  
  8.         df.setMinimumIntegerDigits(15);  
  9.         System.out.println(df.format(d));//1.55556  
  10.         df.setMaximumFractionDigits(2);  
  11.         System.out.println(df.format(d));//1.56  
  12.         //设置小数点后最小位数,不够的时候补0  
  13.         df.setMinimumFractionDigits(10);  
  14.         System.out.println(df.format(d));//1.5555555500  
  15.         //设置整数部分最小长度为3,不够的时候补0  
  16.         df.setMinimumIntegerDigits(3);  
  17.         System.out.println(df.format(d));  
  18.         //设置整数部分的最大值为2,当超过的时候会从个位数开始取相应的位数  
  19.         df.setMaximumIntegerDigits(2);  
  20.         System.out.println(df.format(d));  
  21.     }  
  22.       
  23.     public static void test2(DecimalFormat df) {  
  24.         int number = 155566;  
  25.         //默认整数部分三个一组,  
  26.         System.out.println(number);//输出格式155,566  
  27.         //设置每四个一组  
  28.         df.setGroupingSize(4);  
  29.         System.out.println(df.format(number));//输出格式为15,5566  
  30.         DecimalFormatSymbols dfs = DecimalFormatSymbols.getInstance();  
  31.         //设置小数点分隔符  
  32.         dfs.setDecimalSeparator(';');  
  33.         //设置分组分隔符  
  34.         dfs.setGroupingSeparator('a');  
  35.         df.setDecimalFormatSymbols(dfs);  
  36.         System.out.println(df.format(number));//15a5566  
  37.         System.out.println(df.format(11.22));//11;22  
  38.         //取消分组  
  39.         df.setGroupingUsed(false);  
  40.         System.out.println(df.format(number));  
  41.     }  
  42.       
  43.     public static void test3(DecimalFormat df) {  
  44.         double a = 1.220;  
  45.         double b = 11.22;  
  46.         double c = 0.22;  
  47.         //占位符可以使用0和#两种,当使用0的时候会严格按照样式来进行匹配,不够的时候会补0,而使用#时会将前后的0进行忽略  
  48.         //按百分比进行输出  
  49. //      df.applyPattern("00.00%");  
  50.         df.applyPattern("##.##%");  
  51.         System.out.println(df.format(a));//122%  
  52.         System.out.println(df.format(b));//1122%  
  53.         System.out.println(df.format(c));//22%  
  54.         double d = 1.22222222;  
  55.         //按固定格式进行输出  
  56.         df.applyPattern("00.000");  
  57.         System.out.println(df.format(d));//01.222  
  58.         df.applyPattern("##.###");  
  59.         System.out.println(df.format(d));//1.222  
  60.     } 

  61. 方法二:
  62.  java Math.round() Java中的四舍五入函数
  63. 此方法验证时并未实现,但能完美实现单实型和双实型数的转换,可以有效预防String.format来格式化浮点型数字时因为语言系统而导致的解析不正确案例请见:
  64. 易错案例
  65. Object resultStr = null;

  66. resultStr = (float) (Math.round(Double.parseDouble(sourceStr) * 10) / 10);

  67. resultStr = Double.valueOf(Math.round(Float.parseFloat(sourceStr) * 100) / 100);
    方法三
  68. 使用String.format
    1. public static void main(String[] args) {  
    2.     String str=null;  
    3.     str=String.format("Hi,%s""王力");  
    4.     System.out.println(str);  
    5.     str=String.format("Hi,%s:%s.%s""王南","王力","王张");            
    6.     System.out.println(str);                           
    7.     System.out.printf("字母a的大写是:%c %n"'A');  
    8.     System.out.printf("3>7的结果是:%b %n"3>7);  
    9.     System.out.printf("100的一半是:%d %n"100/2);  
    10.     System.out.printf("100的16进制数是:%x %n"100);  
    11.     System.out.printf("100的8进制数是:%o %n"100);  
    12.     System.out.printf("50元的书打8.5折扣是:%f 元%n"50*0.85);  
    13.     System.out.printf("上面价格的16进制数是:%a %n"50*0.85);  
    14.     System.out.printf("上面价格的指数表示:%e %n"50*0.85);  
    15.     System.out.printf("上面价格的指数和浮点数结果的长度较短的是:%g %n"50*0.85);  
    16.     System.out.printf("上面的折扣是%d%% %n"85);  
    17.     System.out.printf("字母A的散列码是:%h %n"'A');  
    18. }  



这篇关于java格式化小数点问题,四舍五入的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1083423

相关文章

JVM 的类初始化机制

前言 当你在 Java 程序中new对象时,有没有考虑过 JVM 是如何把静态的字节码(byte code)转化为运行时对象的呢,这个问题看似简单,但清楚的同学相信也不会太多,这篇文章首先介绍 JVM 类初始化的机制,然后给出几个易出错的实例来分析,帮助大家更好理解这个知识点。 JVM 将字节码转化为运行时对象分为三个阶段,分别是:loading 、Linking、initialization

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

Spring Security--Architecture Overview

1 核心组件 这一节主要介绍一些在Spring Security中常见且核心的Java类,它们之间的依赖,构建起了整个框架。想要理解整个架构,最起码得对这些类眼熟。 1.1 SecurityContextHolder SecurityContextHolder用于存储安全上下文(security context)的信息。当前操作的用户是谁,该用户是否已经被认证,他拥有哪些角色权限…这些都被保

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

Java进阶13讲__第12讲_1/2

多线程、线程池 1.  线程概念 1.1  什么是线程 1.2  线程的好处 2.   创建线程的三种方式 注意事项 2.1  继承Thread类 2.1.1 认识  2.1.2  编码实现  package cn.hdc.oop10.Thread;import org.slf4j.Logger;import org.slf4j.LoggerFactory

好题——hdu2522(小数问题:求1/n的第一个循环节)

好喜欢这题,第一次做小数问题,一开始真心没思路,然后参考了网上的一些资料。 知识点***********************************无限不循环小数即无理数,不能写作两整数之比*****************************(一开始没想到,小学没学好) 此题1/n肯定是一个有限循环小数,了解这些后就能做此题了。 按照除法的机制,用一个函数表示出来就可以了,代码如下

hdu1043(八数码问题,广搜 + hash(实现状态压缩) )

利用康拓展开将一个排列映射成一个自然数,然后就变成了普通的广搜题。 #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#inclu