java学习探究:格式化

java的格式化

最近做题,总是遇到格式化问题,就想着总结一下,方便以后查阅。我大致总结了一下,如下:

方法1

这是最简单的一种方法,就是直接使用printf函数,具体操作和C语言中的格式化相同。
首先,我们先总结一下格式类型:

转换符说明
%d十进制整数类型
%x十六进制整数类型
%o八进制整数类型
%b布尔类型(true或者false)
%f浮点数类型
%s字符串类型
%c字符类型
%%百分比类型(%)
%n换行符

不过需要注意一点:最后的结果是四舍五入后的。

下面,给个代码示例:

package homework;

public class qw {
	public static void main(String[] args) {
		double d = 33.1415926;
		String s = "hello";
		int i = 1314;
		// "%"表示进行格式化输出,"%"之后的内容为格式的定义。
		System.out.printf("%f%n", d);
		System.out.printf("%8.3f%n", d);// "9.2"中的9表示输出的长度,2表示小数点后的位数。
		System.out.printf("%+8.3f%n", d);// "+"表示输出的数带正负号。
		System.out.printf("%-8.4f%n", d);// "-"表示输出的数左对齐(默认为右对齐)。
		System.out.printf("%+-8.3f%n", d);// "+-"表示输出的数带正负号且左对齐。
		System.out.printf("%d%n", i);
		System.out.printf("%o%n", i);
		System.out.printf("%x%n", i);
		System.out.printf("%#x%n", i);//带十六进制标志的十六进制数
		System.out.printf("%s%n", s);
	}
}

运行结果如下:
在这里插入图片描述

方法2

使用十进制数字格式化(DecimalFormat),java提供了DecimalFormat类来帮助我们轻松的实现十进制数字的格式化。开头需要加上: import java.text.DecimalFormat; 不过该方法也有四舍五入现象的存在。

DecimalFormat类主要依靠“0”和“#”占位符来指定数字长度,其中,两种占位符的用法如下:
(1)“0”:表示当位数不足时,用“0”补位,若是位数足够,显示正常位数;
(2)“#”:与“0”不同,表示当位数不够时,该位不显示。

使用DecimalFormat类进行格式化的时候,需要先定义一个对象,然后使用该对象调用format函数。

下面,我们举个例子看看:

package homework;

import java.text.DecimalFormat;

public class qw {
	private static double a = 3.14;
	private static double b = a;

	public static void main(String[] args) {
		DecimalFormat df = new DecimalFormat("###.####");
		System.out.println(df.format(a));
		DecimalFormat d = new DecimalFormat("000.0000");
		System.out.println(d.format(b));
	}
}

运行结果如下:
在这里插入图片描述

方法3

使用String.format()方法,其形式和方法1中的printf很相似,该法也存在四舍五入的问题。

package homework;

public class qw {
	private static double a = 3.1415926;
	public static void main(String[] args) {
		System.out.println(String.format("%.2f",a));
	}
}

运行结果如下:
在这里插入图片描述

方法4

使用Formatter类,我们需要引入类名:java.util.Fomatter,具体写法和方法1的printf是一样的。

下面,我们举个例子:

package homework;
import java.util.Formatter;
public class qw {
	public static void main(String[] args){
		double a=3.1415926;
        Formatter formatter = new Formatter(System.out);
                formatter.format("%.2f",a);
        formatter.close();
    }
}

注意:
在例子中,我直接使用了Formatter formatter = new Formatter(System.out);也就是指定了输出,控制台会将其中的对象输出,当然也可以不这么写,再以后添加对象时,使用System.out.print(formatter());输出。还有就是最后要添加formatter.close();目的是为了防止该格式持续下去,对以后的输出造成影响。

即:

package homework;
import java.util.Formatter;
public class qw {
	public static void main(String[] args){
		double a=3.1415926;
        Formatter formatter = new Formatter();
        System.out.println(formatter.format("%.2f",a));
        formatter.close();
    }
}

运行结果如下:
在这里插入图片描述

总结

格式化是编程中经常遇到的问题,尤其是精度问题,很多平台上,如果答案精度不对,会显示答案错误,当我们掌握了多种格式化的方法后,就不用担心这个问题了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值