`
zgqynx
  • 浏览: 1371029 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java 财务报表中金额的显示<转>

    博客分类:
  • java
阅读更多
原文:http://hi.baidu.com/myloveral/blog/item/96e901df5aa0e51262279870.html

一、将数据库中的数字转化为金额(逗号分割的形式)
convert(varchar,cast(amt as money),1)

二、求汇总量
1.大数运算
(1)大数运算类
----------------------------- Arith.java ----strat--------------------------------------
/*
* 创建日期 2004-10-14
*
* 如果需要精确计算,非要用String来够造BigDecimal不可
*/
package com.ysusoft.util.common;

/**
* @author Jstar
*
*
* 窗口 > 首选项 > Java > 代码生成 > 代码和注释
*/
import java.math.BigDecimal;

/**
* 由于Java的简单类型不能够精确的对浮点数进行运算,这个工具类提供精
* 确的浮点数运算,包括加减乘除和四舍五入。
*/

public class Arith {
//默认除法运算精度
private static final int DEF_DIV_SCALE = 10;
//这个类不能实例化
private Arith() {
}
/**
* 提供精确的加法运算。
* @param v1 被加数
* @param v2 加数
* @return 两个参数的和
*/
public static double add(double v1, double v2) {
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.add(b2).doubleValue();
}
/**
* 提供精确的减法运算。
* @param v1 被减数
* @param v2 减数
* @return 两个参数的差
*/
public static double sub(double v1, double v2) {
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.subtract(b2).doubleValue();
}
/**
* 提供精确的乘法运算。
* @param v1 被乘数
* @param v2 乘数
* @return 两个参数的积
*/
public static double mul(double v1, double v2) {
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.multiply(b2).doubleValue();
}
/**
* 提供(相对)精确的除法运算,当发生除不尽的情况时,精确到
* 小数点以后10位,以后的数字四舍五入。
* @param v1 被除数
* @param v2 除数
* @return 两个参数的商
*/
public static double div(double v1, double v2) {
return div(v1, v2, DEF_DIV_SCALE);
}
/**
* 提供(相对)精确的除法运算。当发生除不尽的情况时,由scale参数指
* 定精度,以后的数字四舍五入。
* @param v1 被除数
* @param v2 除数
* @param scale 表示表示需要精确到小数点以后几位。
* @return 两个参数的商
*/
public static double div(double v1, double v2, int scale) {
if (scale < 0) {
   throw new IllegalArgumentException("The scale must be a positive integer or zero");
}
BigDecimal b1 = new BigDecimal(Double.toString(v1));
BigDecimal b2 = new BigDecimal(Double.toString(v2));
return b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP).doubleValue();
}
/**
* 提供精确的小数位四舍五入处理。
* @param v 需要四舍五入的数字
* @param scale 小数点后保留几位
* @return 四舍五入后的结果
*/
public static double round(double v, int scale) {
if (scale < 0) {
   throw new IllegalArgumentException("The scale must be a positive integer or zero");
}
BigDecimal b = new BigDecimal(Double.toString(v));
BigDecimal one = new BigDecimal("1");
return b.divide(one, scale, BigDecimal.ROUND_HALF_UP).doubleValue();
}
};
----------------------------- Arith.java ----end--------------------------------------

(2)程序中调用
//所有数值格式的抽象基类NumberFormat 的格式化十进制数值的具体子类
<%@ page import="java.text.DecimalFormat" %>
//Arith的路径
<%@ page import="com.ysusoft.util.common.Arith"%>
// 不可变的、任意精度的带符号的十进制数
<%@ page import="java.math.BigDecimal"%>

    //实例化精确计算方法
    Arith arith = null;
//将逗号替换为空再求和 common.replace((String)vector_data1.elementAt(7),",","")
double sum_qty = arith.add(sum_qty,java.lang.Double.parseDouble(common.replace((String)vector_data1.elementAt(7),",","")));
//转为字符串
String   str_sum_qty1=new BigDecimal(new java.text.DecimalFormat("############.000").format(sum_qty1)).toString(); 

(3)将字符串转换成逗号分割的形式
----------------------------- Money.java ----start--------------------------------------
/*
* 创建日期 2007-4-26
* 把字符串用逗号分割
*/
package com.ysusoft.util.common;
public class Money {
private static final int DEF_DIV_SCALE = 3;
private Money() {
}
public static String parseMoney(String str1) {  
     int len=str1.length();
    int k = 0;
    int m = 0;
    int dot = 0;
    int start = 0;
    String str_dot="";
    String str_start="";
    for(k=1;k<len;k++)
    {
        if(str1.substring(k,k+1).equals("."))
         {
                  dot=k+1;                
                  break;
             }
    }
    start=(dot-1)%DEF_DIV_SCALE;
    if(start==0)
    {
      str_start="";
    }
    else
    {
           str_start=str1.substring(0,start)+",";
    }
    m=0;
    for(k=start;k<dot;k+=DEF_DIV_SCALE)
    {
        str_start+=str1.substring(k,k+DEF_DIV_SCALE)+",";
        m++;
    }
    if(start==0)
    {
        str_start=str_start.substring(0,dot+m-3);
    }
    else
    {   
        str_start=str_start.substring(0,dot+m-2);
    }
    str_dot=str1.substring(dot,len);
    str1=str_start+"."+str_dot;

return str1;
}
};
----------------------------- Money.java ----start--------------------------------------
程序中调用
<%@ page import="com.ysusoft.util.common.Money"%>
str_sum_qty1=    money.parseMoney(str_sum_qty1);
显示
<td nowrap bgcolor="#FFFFFF" align="right"><%=str_sum_qty1%></td>
分享到:
评论
1 楼 wangxinqn 2008-02-22  

相关推荐

    使用java将人民币金额转换成大写并使用自定义标签显示到页面

    在中文环境中,人民币的金额通常使用大写表示,以便于财务报表的规范性和防止篡改。本篇将介绍如何使用Java编程语言将人民币金额转换成大写,并且通过自定义标签库(Tag Library)在网页上显示。首先,我们来看`...

    java将数字转换成大写字母

    1. 财务报表:在财务报表中,需要将数字金额转换成中文大写字符,以便于显示或打印。 2. 发票系统:在发票系统中,需要将数字金额转换成中文大写字符,以便于显示或打印。 3. 电子商务系统:在电子商务系统中,需要...

    java 类 金额转换成大写

    * 财务系统:可以用于生成财务报表和账单。 * 电子商务平台:可以用于显示订单金额和支付金额。 * 银行系统:可以用于生成银行对账单和存款单。 使用 `SimpleMoneyFormat` 类可以轻松实现金额转换成大写的功能,...

    将数字转为中文金额的大写方式(Java版)

    在财务领域,为了确保金额的准确无误,通常需要将数字转化为中文大写形式,以便在会计报表和合同中使用。本篇文章主要探讨的是如何使用Java实现数字到中文金额大写的转换。 首先,`Trans2RMB.java`是这个功能的核心...

    Java钱币大小写转换

    对于企业级应用而言,确保金额转换的准确性是至关重要的,这不仅关系到财务报表的合法性,也直接影响到企业的信誉和合规性。因此,在实际开发中,应充分测试各种边界情况,确保转换逻辑的健壮性和适应性。

    pb设计财务报表

    在PB(PowerBuilder)设计财务报表的过程中,我们主要涉及到的是数据可视化、数据分析和报表生成的技巧。PowerBuilder是一款强大的客户端/服务器应用开发工具,尤其在创建数据库驱动的应用程序时表现出色,包括财务...

    Ireport实现金额大写(自己实现的)

    本文将详细介绍如何使用Ireport内置的Scriptlet功能实现将金额转换为大写的汉字表示,这对于财务报表的制作尤为重要,因为在中国,金额通常需要以中文大写的形式出现,以增加数据的准确性,防止篡改。 首先,我们要...

    jsp页面人民币小写转大写

    在处理金融数据时,为了保证准确性和规范性,通常会将金额从小写的阿拉伯数字转换为大写的汉字数字,这在财务报表、发票等正式文档中尤其常见。在JSP(JavaServer Pages)页面中实现这个功能,我们可以利用Java编程...

    个人财务软件 java swt

    在这个个人财务软件项目中,Java作为基础编程语言,负责处理数据逻辑、业务规则以及与用户的交互。 【SWT】是Java中的一个GUI库,它是Java AWT(Abstract Window Toolkit)和Swing的替代品,提供了更接近操作系统...

    Java财务管理应用程序 - 记录和跟踪个人或企业的财务信息

    4. 自动生成财务报表:应用程序可以按月或按年生成财务报表,展示指定时间段内的收入和支出趋势。这可能涉及到对事务数据的聚合和图表绘制,可以使用Java的日期时间API和报表库(如JFreeChart)来实现。 7. 总结和...

    中文金额变数字金额

    在IT行业中,中文金额变数字金额的转换是一个常见的需求,特别是在财务软件、数据分析以及报表生成等领域。这个过程涉及到中文字符的识别、数字的解析以及两者之间的转换规则。在这个主题下,我们可以深入探讨以下几...

    大小金额转化

    根据给定的文件信息,我们将深入探讨“大小金额转化”的技术实现,主要聚焦于Java与C#中的编码实践。此话题涉及将数字金额转化为中文大写金额,这在财务、银行以及任何涉及资金报告的系统中是常见的需求。 ### Java...

    钱的中文和数字转换的js和事例页面

    这个功能通常被用于财务报表、发票系统或者其他与金钱相关的网页应用中。 标题"钱的中文和数字转换的js和事例页面"表明我们有一个JavaScript实现的函数,专门处理这种转换,并且有一个名为"index"的示例页面用于...

    Java项目:飞机订票系统(java+swing+Oracle)

    【Java项目:飞机订票系统】是一个基于Java技术栈,结合Swing图形用户界面和Oracle数据库的实用系统,主要用于模拟并实现机票预订的各种业务流程。该系统覆盖了多个关键功能模块,包括: 1. **机票查询**:用户可以...

    Java课程设计--家庭理财系统带GUI界面.rar

    4. **报表与分析**:生成图表展示收支趋势,帮助用户了解财务状况,如饼图展示支出比例,折线图显示收入变化。 5. **提醒与通知**:当账单到期或超出预算时,系统可以通过弹窗或邮件提醒用户。 为了实现这些功能,...

    基于javaSwing的个人消费管理系统源码和exe文件

    【Java Swing个人消费管理系统】是基于Java 2 Standard Edition (Java 2SE) 平台开发的一款用户友好的财务工具,旨在帮助用户管理和追踪个人消费情况。它利用Swing库来构建图形用户界面(GUI),使得操作直观且易于...

    锐浪报表Grid++Report5.3

    11、全中文界面,针对中国式报表进行了很多专门实现,如:表格报表、财务金额线、大写金额、发票圈叉图标、负数红字、多层表头等。很多在国外报表工具中很难实现的功能都可以轻易实现。 12、提供丰富交互事件,轻松...

    java家庭收支器系统

    【Java家庭收支器系统】是一个基于Java编程语言开发的小型桌面应用程序,主要目的是帮助用户管理和追踪他们的日常家庭财务状况。这个系统集成了手动添加监听器的功能,使得用户在交互过程中可以更加灵活地处理收支...

    自定义标签 将阿拉伯数子转换成银行数字

    在这个项目中,你将学习如何将阿拉伯数字转换为银行数字,这是一个常见的需求,比如在财务报表或发票中,为了美观和规范,通常会使用银行数字格式来显示金额。例如,1234会被显示为"一千二百三十四"。 银行数字转换...

    班费管理系统,java

    【班费管理系统】是基于Java编程语言开发的一款实用软件,主要目标是协助班级进行财务管理,规范班费收支,提高管理效率。在这个系统中,Java语言以其稳定性和跨平台性成为了首选开发工具,使得该系统能在多种操作...

Global site tag (gtag.js) - Google Analytics