NumberUtils

package cn.edu.hbcf.common.utils;

import java.math.BigDecimal;
import java.text.NumberFormat;
import java.util.regex.Pattern;

public class NumberUtils {

    /**
     * 处理Double类型数据,如果为空返回0,否则返回其值
     *
     * @param d
     * @return
     */
    public static double getDoubleNumber(Double d) {

        if (d != null) {
            return d.doubleValue();
        } else {
            return 0;
        }

    }
    /**
     * 判断 String 类型的数据是否能Double转换
     * @param s
     * @return
     */
    public static boolean isNumString(String s){
         Pattern pattern = Pattern.compile("^[-+]?\\d+(\\.\\d+)?");
         //Pattern pattern = Pattern.compile("(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*))");

         return pattern.matcher(s).matches();
    }

    /**
     * 获取百分数,保留2为小数
     *
     * @param d
     * @return
     */
    public static String getPercentNumber(Double d) {
        if(d==null){
            d=0.0;
        }
        // 获取格式化对象
        NumberFormat nt = NumberFormat.getPercentInstance();
        // 设置百分数精确度2即保留两位小数
        nt.setMinimumFractionDigits(2);
        return nt.format(d);
    }
    /**
     *
     * @param d
     * @param a
     * @return
     */
    public static double getDoubleFormat(Double d,int a){
        if(d==null){
            d=0.0;
        }
          BigDecimal bg = new BigDecimal(d);
          return bg.setScale(a, BigDecimal.ROUND_HALF_UP).doubleValue();
    }

    /**
     * 保留小数
     *
     * @param value
     *            位数
     * @return
     */
    public static double toFixed(double value) {
            long lg = Math.round(value * 100); // 四舍五入
            double d = lg / 100.0; // 注意:使用 100.0而不是 100
            return d;
    }

    public static double getFromPrecentNumber(String s) {
        if (s != null && !"".equals(s)) {
            double d = new Double(s.substring(0, s.indexOf(‘%‘))) / 100.0;
            return d;
        } else
            return 0;
    }
    /**
     * 数值类型转化Double to Int
     * @param d
     * @return
     */
    public static int toInt(Double d){
        if(d == null){
            return 0;
        }else{
            return (int)Math.round(d.doubleValue());
        }
    }

    public static String convertDouble(Double d){
        if(d == null){
            return "0";
        }else{
            NumberFormat nf = NumberFormat.getInstance();
            nf.setGroupingUsed(false);

            return nf.format(d);
        }
    }

    /**
     * 数字金额大写转换,思想先写个完整的然后将如零拾替换成零
     * 要用到正则表达式
     */
    public static String digitUppercase(double n){
        String fraction[] = {"角", "分"};
        String digit[] = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" };
        String unit[][] = {{"元", "万", "亿"},
                     {"", "拾", "佰", "仟"}}; 

        String head = n < 0? "负": "";
        n = Math.abs(n); 

        String s = "";
        for (int i = 0; i < fraction.length; i++) {
            s += (digit[(int)(Math.floor(n * 10 * Math.pow(10, i)) % 10)] + fraction[i]).replaceAll("(零.)+", "");
        }
        if(s.length()<1){
            s = "整";
        }
        int integerPart = (int)Math.floor(n); 

        for (int i = 0; i < unit[0].length && integerPart > 0; i++) {
            String p ="";
            for (int j = 0; j < unit[1].length && n > 0; j++) {
                p = digit[integerPart%10]+unit[1][j] + p;
                integerPart = integerPart/10;
            }
            s = p.replaceAll("(零.)*零$", "").replaceAll("^$", "零") + unit[0][i] + s;
        }
        return head + s.replaceAll("(零.)*零元", "元").replaceFirst("(零.)+", "").replaceAll("(零.)+", "零").replaceAll("^整$", "零元整");
    } 

}
时间: 2024-12-28 10:06:40

NumberUtils的相关文章

NumberUtils、ArrayUtils和RandomUtils工具类用法

一.NumberUtils工具类/*1.NumberUtils.isNumber():判断字符串是否是数字*/NumberUtils.isNumber("5.96");//结果是trueNumberUtils.isNumber("s5");//结果是falseNumberUtils.isNumber("0000000000596");//结果是true /*2.NumberUtils.isDigits():判断字符串中是否全为数字*/Number

高精度的运算的NumberUtils

package com.zjt.frame; import java.math.BigDecimal; import org.apache.commons.lang3.StringUtils; /** * * 功能说明: 提供高精度的运算支持. 所以函数以double为参数类型,兼容int与float. * * @author admin */public class NumberUtils { private NumberUtils() { } /** * 精确的加法运算. * * @para

第八章 企业项目开发--分布式缓存memcached

注意:本节代码基于<第七章 企业项目开发--本地缓存guava cache> 1.本地缓存的问题 本地缓存速度一开始高于分布式缓存,但是随着其缓存数量的增加,所占内存越来越大,系统运行内存越来越小,最后系统会被拖慢(这一点与第二点联系起来) 本地缓存存于本机,其缓存数量与大小受本机内存大小限制 本地缓存存于本机,其他机器的访问不到这样的缓存 解决方案:分布式缓存 Jboss cache:缓存还存于本机,但是会同步更新到其他机器(解决了第三个问题,解决不了第一和第二个问题),如果缓存机器数量很多

Java设计模式——代理模式

前言: 上一篇说到了策略模式.单类图上来说,它和本篇要说的代理模式还真是有些像似.都需要一个公共的接口,还有一些实现类.代理类(包装类)封装了一个接口对象,提供客户端调用.这些都很类似.不过,有一个细节需要我们注意一下,那就是这里的代理类也需要去继承这里的公共接口.而在策略模式中,包装类则不需要这么做. 概述: 代理模式就是定义一个原对象的代理对象,来帮助原对象和系统之外的业务作沟通.也就是说,如果我们不能直接或是不愿直接去使用原对象,那么我们就可以使用创建一个原对象的代理来进行操作. 本文链接

项目中AOP的实例应用

其中包括了权限管理.表单验证.事务管理.信息过滤.拦截器.过滤器.页面转发等等. 公司项目的应用:(涉及用户验证登录以及用户是否有管理员权限.心理用户权限等),还有涉及的其他日志管理代码就不一一举例了: /** * 登录拦截器(登录判断) * @author alex * */ public class LoginInterceptor extends HandlerInterceptorAdapter { @Autowired private UserService userService;

Java实现Web页面前数字字母验证码实现

最近公司做项目开发中用到了验证码实现功能,将实现代码分享出来, 前段页面实现代码: <ul>    <li><label>验证码:</label></li>    <li>     <div>     <input  type="text" name="validateCode"  class="login_input" value=""

判断字符串是不是数字

NumberUtils.isNumber(str)判断字符串是不是数字或者能不能转换成数字 public class StringIsNumber { public static void main(String[] args) { Scanner s = new Scanner(System.in); String str = s.nextLine(); if(NumberUtils.isNumber(str)){ System.out.println("输入的是数字"); }els

Spring3中好用的工具类收集

1) 请求工具类 org.springframework.web.bind.ServletRequestUtils //取请求参数的整数值: public static Integer getIntParameter(ServletRequest request, String name) public static int getIntParameter(ServletRequest request, String name, int defaultVal) -->单个值 public sta

Apache Commons 工具类介绍及简单使用

Apache Commons包含了很多开源的工具,用于解决平时编程经常会遇到的问题,减少重复劳动.下面是我这几年做开发过程中自己用过的工具类做简单介绍.   组件 功能介绍 BeanUtils 提供了对于JavaBean进行各种操作,克隆对象,属性等等. Betwixt XML与Java对象之间相互转换. Codec 处理常用的编码方法的工具类包 例如DES.SHA1.MD5.Base64等. Collections java集合框架操作. Compress java提供文件打包 压缩类库. C