java SCJP中的题目

来源:百度知道 编辑:UC知道 时间:2024/06/04 00:58:44
import java.text.*;
import java.lang.*;
import java.io.*;
public class Test
{
public static void main(String[] agrs)
{
NumberFormat nf = NumberFormat.getInstance();
nf.setMaximumFractionDigits(4);
nf.setMinimumFractionDigits(2);
String a=nf.format(3.1415926);
String b=nf.format(2);
System.out.println(a+" "+b+" ");

}

}
这个为什么输出的是3.1416 2.00小数位这么奇怪的?

还有一题
import java.text.*;
import java.util.*;
import java.lang.*;
import java.io.*;
public class Test
{
public static void main(String[] agrs)
{

double input = 314159.2677;
NumberFormat nf = NumberFormat.getInstance(Locale.ITALIAN);
String b;
b = nf.format(input);
System.out.println(b);
}

}

这题怎么又输出314.15926呢?这小数位真的读不懂,准备要考SCJP了,请大家详细点说明

NumberFormat 是所有数字格式的抽象基类。此类提供了格式化和分析数字的接口。NumberFormat 还提供了一些方法,用来确定哪些语言环境具有数字格式,以及它们的名称是什么。

NumberFormat 有助于格式化和分析任何语言环境的数字。代码能够完全独立于语言环境对于小数点、千位分隔符或特殊的十进制数字的约定,甚至与数字格式是否为十进制也是无关的。

为了格式化当前语言环境的数字,要使用一个工厂类方法:

myString = NumberFormat.getInstance().format(myNumber);
如果格式化多个数字,那么获得该格式并多次使用它是更为高效的做法,这样系统就不必多次获取关于语言环境语言和国家/地区约定的信息了。
NumberFormat nf = NumberFormat.getInstance();
for (int i = 0; i < a.length; ++i) {
output.println(nf.format(myNumber[i]) + "; ");
}
要格式化不同语言环境的日期,可在 getInstance 的调用中指定它。
NumberFormat nf = NumberFormat.getInstance(Locale.FRENCH);
还可以使用 NumberFormat 来分析数字:
myNumber = nf.parse(myString);
使用 getInstance 或 getNumberInstance 来获取常规数字格式。使用 getIntegerInstance 来获取整数数字格式。使用 getCurrencyInstance 来获取货币数字格式。使用 getPercentInstance 来获取显示百分比的格式。使用此格式,小数 0.53 将显示为 53%。
使用诸如 setMinimumFractionDigits 这样的方法还可以控制数字的显示。如果想对格式化和分析施加更多的控制(或者给予用户更多的控制),可以尝试将从工厂方法获