数字格式化类[整理]
在JAVA中,对没有格式化的数据遵守以下原则:
(1)如果数据绝对值大于0.001并且小于10000000,Java将以常规小数形式
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
示
(2)如果数据绝对值小于0.001或者大于10000000,使用科学计数法表示
格式化采用:DecimalFormat类进行格式化 import java.text.DecimalFormat;
常用的特殊字符的含义
字符 字符含义
0 代表阿拉伯数字,使用特殊字符“0”表示数字的一位阿拉伯数字,如果该位
不存在数字,则显示0
# 代表阿拉伯数字,使用特殊字符“#”表示数字的一位阿拉伯数字,如果该位
存在数字,则显示字符;如果该位不存在数字,则不显示 . 小数分隔符或货币分隔符
- 负号
, 分组分隔符
E 分隔科学计数法中的尾数和指数
% 本符号放置在数字的前面或后缀,将数字乘以100显示为百分数 \u2030 本符号放置在数字的前面或后缀,将数字乘以1000显示为千分数 ?\u00A4 本符号放置在数字的前面或后缀,作为货币记号
‘ 本符号为单引号,当上述特殊字符出现在数字中,应为特殊符号添加单引号,
系统会将此符号视为普通字符处理
示例:
//package com.lzw;
package edu.date;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import java.text.DecimalFormat;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.border.LineBorder;
public class NumberFormateDemo extends JFrame {
private JTextArea infoArea;
private JTextField numberField;
public static void main(String args[]) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
NumberFormateDemo frame = new NumberFormateDemo();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* 创建窗体的构造方法
*/
public NumberFormateDemo() {
super();
final BorderLayout borderLayout = new BorderLayout(10,10);
getContentPane().setLayout(borderLayout);
setBounds(100, 100, 348, 225);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
getContentPane().add(panel, BorderLayout.NORTH);
final JLabel label = new JLabel();
label.setText("请输入要格式化的数字:");
panel.add(label, BorderLayout.WEST);
numberField = new JTextField(); // 创建数字文本框
numberField.setText("123456789.25"); // 演示数字
panel.add(numberField);
final JButton button = new JButton(); // 创建确定按钮
button.addActionListener(new ActionListener() { // 添加事件监听器
public void actionPerformed(final ActionEvent e) {
do_button_actionPerformed(e);
}
});
button.setText("确定");
panel.add(button, BorderLayout.EAST);
infoArea = new JTextArea(); // 创建文本域组件
infoArea.setFont(new Font("宋体", Font.PLAIN, 15)); // 设置字体
infoArea.setBorder(new LineBorder(Color.black, 1, false));
infoArea.setEditable(false); // 禁止编辑
getContentPane().add(infoArea);
}
/**
* 确定按钮的事件处理方法
* @param e 动作事件
*/
protected void do_button_actionPerformed(final ActionEvent e) {
String text = numberField.getText();
if(text==null||text.isEmpty()){ // 如果没有输入数字
infoArea.setText("请输入数字"); // 显示提示信息
return; // 结束该方法
}
double number=0;
try {
number = Double.parseDouble(text.trim()); // 字符串转换为数字
} catch (NumberFormatException e1) {
infoArea.setText("请输入正确的数字"); // 显示提示信息
return; // 结束该方法
}
infoArea.setText("");
DecimalFormat dmf=new DecimalFormat(); // 创建数字格式化对象
addRmbFormat(number, dmf); // 格式化为人民币格式
grouping3(number, dmf); // 3位分组
grouping4(number, dmf); // 4为分组
keep1_6(number, dmf); // 保留1至6为小数
keep6(number, dmf); // 强制保留6位小数
keep12Int(number, dmf); // 强制截取12位整数
percent(number, dmf); // 百分比格式输出
}
/**
* 百分比格式输出
* @param number 组字
* @param dmf 数字格式化对象
*/
private void percent(double number, DecimalFormat dmf) {
dmf.applyPattern("百分比:#.00,\n");
String numStr = dmf.format(number);
infoArea.append(numStr);
}
/**
* 强制截取12位整数
* @param number 组字
* @param dmf 数字格式化对象
*/
private void keep12Int(double number, DecimalFormat dmf) {
dmf.applyPattern("强制截取12位整数:000000000000\n");
String numStr = dmf.format(number);
infoArea.append(numStr);
}
/**
* 强制保留6位小数
* @param number 组字
* @param dmf 数字格式化对象
*/
private void keep6(double number, DecimalFormat dmf) {
String numStr;
dmf.applyPattern("强制保留6位小数:#.000000\n");
numStr = dmf.format(number);
infoArea.append(numStr);
}
/**
* 保留1-6位小数
* @param number 组字
* @param dmf 数字格式化对象
*/
private void keep1_6(double number, DecimalFormat dmf) {
dmf.applyPattern("保留1-6位小数:#.######\n");
String numStr = dmf.format(number);
infoArea.append(numStr);
}
/**
* 按4为数字分组
* @param number 组字
* @param dmf 数字格式化对象
*/
private void grouping4(double number, DecimalFormat dmf) {
dmf.setGroupingUsed(true);
dmf.setGroupingSize(4);
String grouping4 = "按4为数字分组:" + dmf.format(number) + "\n";
infoArea.append(grouping4);
dmf.setGroupingUsed(false);
}
/**
* 按3为数字分组
* @param number 组字
* @param dmf 数字格式化对象
*/
private void grouping3(double number, DecimalFormat dmf) {
dmf.setGroupingUsed(true);
dmf.setGroupingSize(3);
dmf.applyPattern("");
String grouping3 = "按3为数字分组:" + dmf.format(number) + "\n";
infoArea.append(grouping3);
dmf.setGroupingUsed(false);
}
/**
* 人名币格式输出
* @param number 组字
* @param dmf 数字格式化对象
*/
private void addRmbFormat(double number, DecimalFormat dmf) {
dmf.applyPattern("人名币:,#.00元\n");
String RMB = dmf.format(number);
infoArea.append(RMB);
}