- 论坛徽章:
- 0
|
Java中对浮点数的输出表示
![]()
:
在Java中浮点数包括基本型float、double,以及对象包装类型的Float和Double,对于这些浮点数的输出,不管是显式地还是隐式地调用toString()得到它的表示字串,输出格式都是按照如下规则进行的
如果绝对值大于0.001、小于10000000,那么就以常规的小数形式表示。
如果在上述范围之外,则使用科学计数法表示。即类似于1.234E8的形式。
可以使用 java.text.DecimalFormat及其父类NumberFormat格式化数字
Pattern
0 - 如果对应位置上没有数字,则用零代替
# - 如果对应位置上没有数字,则保持原样(不用补);如果最前、后为0,则保持为空。
正负数模板用分号(;)分割
Number Format Pattern Syntax
You can design your own format patterns for numbers by following the rules specified by the following BNF diagram:
pattern := subpattern{;subpattern}
subpattern := {prefix}integer{.fraction}{suffix}
prefix := '\\u0000'..'\\uFFFD' - specialCharacters
suffix := '\\u0000'..'\\uFFFD' - specialCharacters
integer := '#'* '0'* '0'
fraction := '0'* '#'*
DecimalFormat 常用于获得很好的格式控制,而NumberFormat 常用于指定不同于本地的地区。如何结合两个类呢?
答案围绕着这样的事实:DecimalFormat是NumberFormat的一个子类,其实例被指定为特定的地区。因此,你可以使用NumberFormat.getInstance 指定一个地区,然后将结构强制转换为一个DecimalFormat对象。文档中提到这个技术可以在大多情况下适用
整理的范例
![]()
如下:
package com.experiment;
import java.text.*;
import java.util.*;
public class TestFormat {
public TestFormat() {
super();
// TODO Auto-generated constructor stub
}
/**
* @param args
*/
public static void main(String[] args) {
customFormat("000000.000", 123.7);//000123.700
customFormat(".##\u2030",0.7893234);//789.32‰
customFormat(".##", 0.78934);//.79
customFormat(".##%", 0.78934);//78.93%
customFormat("000000.###", 123.7);//000123.7
customFormat("\u00a5###,###.###", 12345.67); //?12,345.67
customFormat("'这是我的钱$',###.###'美圆'",2533333443.3333);//这是我的钱$2,533,333,443.333美圆
customFormat("\u00A4",2533333443.3333);//¥2533333443
String pattern="'my moneny'###,###.##'RMB';'ur money'###,###.##'US'";
customFormat(pattern,-1223233.456); //ur money1,223,233.46US
customFormat(pattern,1223233.456); // my moneny1,223,233.46RMB
customFormat("0.000E0000",1234.56);//1.235E0003
customFormat3(12345.46); //¥12,345.46
Locale[] locales = { new Locale("en", "US"),
new Locale("de", "DE"),
new Locale("fr", "FR") };
for (int i = 0; i
public static void localizedFormat(String pattern, double value, Locale loc ) {
NumberFormat nf = NumberFormat.getNumberInstance(loc);
DecimalFormat df = (DecimalFormat)nf;
df.applyPattern(pattern);
String output = df.format(value);
System.out.println(value+" "+pattern + " " + output + " " + loc.toString());
}
}
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/37218/showart_340143.html |
|