• 【Java、Util】元和分的相互转换


    import java.math.BigDecimal;
    import java.text.DecimalFormat;
    
    
    /**
     * @Title: ChangeMoneyUtil.java
     * @Package: 
     * @Description: TODO
     * @author: 
     * @date: 2017年5月24日 下午2:44:14
     * @version: V1.0
     */
    public class ChangeMoneyUtil {
    
        /**
         * 分转元
         * 
         * @param fen
         * @return
         * @author 
         * @date 2017年5月24日
         */
        public static String changeFenToYuan(int fen) {
            DecimalFormat def = new DecimalFormat("0.00");// 格式化小数
            String s = def.format((float) fen / 100);
            return s;
        }
    
        /**
         * 分转元
         * 
         * @param fen
         * @return
         * @author 
         * @date 2017年7月3日
         */
        public static String changeFenToYuan(String fen) {
            DecimalFormat def = new DecimalFormat("0.00");// 格式化小数
            if (!StringUtil.hasText(fen)) {
                return def.format(Float.valueOf("0"));
            }
            String s = def.format(Float.valueOf(fen) / 100);
            return s;
        }
    
        /**
         * 元转分
         * 
         * @param fen
         * @return
         * @author 
         * @date 2017年5月24日
         */
        public static int changeYuanToFen(double yuan) {
            return Integer.valueOf((int) (yuan * 100));
        }
    
        /**
         * 元转分
         * 
         * @param fen
         * @return
         * @author 
         * @date 2017年7月3日
         */
        public static int changeYuanToFen(String yuan) {
            if (!StringUtil.hasText(yuan)) {
                return 0;
            }
            if (yuan.indexOf(".") != -1) {
                double num = Double.valueOf(yuan) * 100;
                // 使用round方法:解决Double精度问题
                if (round(num % 1.0,2,BigDecimal.ROUND_HALF_UP) == 0) {
                    return Integer.valueOf(String.valueOf((long) num));
                }
                return Integer.valueOf(String.valueOf(num));
            }
            return Integer.valueOf(yuan) * 100;
        }
    
         /**   
         * 对double数据进行取精度.   
         * @param value  double数据.   
         * @param scale  精度位数(保留的小数位数).   
         * @param roundingMode  精度取值方式.   
         * @return 精度计算后的数据.   
         */ 
        public static double round(double value, int scale,  
                int roundingMode) {    
           BigDecimal bd = new BigDecimal(value);    
           bd = bd.setScale(scale, roundingMode);    
           double d = bd.doubleValue();    
           bd = null;    
           return d;    
       }
        
        /**
         * double转int
         * @param price
         * @return
         * @author 
         * @date 2017年7月12日
         */
        public static int doubleFormatToInt(Double price){
            if(null == price){
                return 0;
            }
            return Integer.valueOf(new DecimalFormat("#").format(price));
        }
        
        public static void main(String[] args) {
            /*System.out.println(changeFenToYuan(1002));
            System.out.println(changeFenToYuan(1));
            System.out.println(changeFenToYuan(0));
            System.out.println(changeFenToYuan("1002"));
            System.out.println(changeFenToYuan("1"));
            System.out.println(changeFenToYuan("0"));
            System.out.println(changeFenToYuan(null));
            System.out.println(changeYuanToFen(0));
            System.out.println(changeYuanToFen(10.02));
            System.out.println(changeYuanToFen(0.00));
            System.out.println(changeYuanToFen(null));
            System.out.println(changeYuanToFen("10.02"));
            System.out.println(changeYuanToFen("0.00"));
            //System.out.println(Integer.valueOf("1.01"));
            System.out.println(doubleFormatToInt(-100.1));*/
            System.out.println(changeYuanToFen("1.1"));
            System.out.println(110%1.0);
        }
    }
  • 相关阅读:
    [Linux/wine.笔记]关于WINE(Linux上运行Windows程序的兼容层)
    [docker.笔记]常用命令
    [技巧.DotNet]超级好用的动态对象ExpandoObject
    .net core 的窗体设计器进展(.NET Core Windows Forms designer),5月中旬或将发布成熟版!
    [问题记录.Oracle/odp.net]托管ODP中,连接池的连接验证参数(validate connection=true)无效?
    [JWT]Json Web Token 备忘
    [MQ]RabbitMQ的概要介绍及消息路由规则
    常见排序算法
    C语言数值存储溢出探讨
    从计算理解数组
  • 原文地址:https://www.cnblogs.com/flydkPocketMagic/p/7449221.html
Copyright © 2020-2023  润新知