UVA474 JAVA版 Heads / Tails Probability

自我标记:DecimalFormat格式控制
辣鸡小玲的题解

UVA474 JAVA版

Heads / Tails Probability

这题有点坑的是printf的时候,格式控制%.3f居然会被WA,我没太懂为啥%.3f被WA,作为一个MARK我会补出我的WA代码,说不定以后回来看的时候就懂了噢。
打表的算法是抄了 小白菜又菜 的C++版本,这种抄,不知道算不算抄噢,超链接引用过去了噢。

import java.util.*;
import java.text.DecimalFormat;
import java.util.Scanner;

public class Main {
	public static void main(String args[]) {
		// 打表计算,查询输出
		double val[] = new double[1000005];
		int bit[] = new int[1000005];
		val[0] = 1;
		bit[0] = 0;
		for (int i = 1; i < 1000001; i++) {
			val[i] = val[i - 1] / 2;
			bit[i] = bit[i - 1];
			if (val[i] < 1) {
				val[i] *= 10;
				bit[i]--;
			}
		}
		Scanner reader = new Scanner(System.in);
		int n;
		while (reader.hasNext()) {
			n = reader.nextInt();
			//MARK Ⅰ以下四行代码格式输出,本该可以用一行搞定的,我深入研究下第二行
			System.out.printf("2^-%d = ", n);
			DecimalFormat df = new DecimalFormat("0.000");//MARK Ⅱ
			System.out.print(df.format(val[n]));
			System.out.printf("e%d\n", bit[n]);
		}
	}
}

MARKⅠ

如果这四行这样输出:

System.out.printf("2^-%d = %.3fe%d\n",n,val[n],bit[n]);

看着也没有问题对不对,运行也是OK的,可是就是被WA了,我哭

MARK Ⅰ ending

CSND真是个好东西,查啥有啥

此处引用: icecoola_(叫冰阔落?)的《JAVA_DecimalFormat数字格式化_小数_保留两位》

double pi=3.1415927;//圆周率
//取一位整数 
System.out.println(new DecimalFormat("0").format(pi));//3
//取一位整数和两位小数  
System.out.println(new DecimalFormat("0.00").format(pi));//3.14
//取两位整数和三位小数,整数不足部分以0填补。  
System.out.println(new DecimalFormat("00.000").format(pi));//03.142  
//取所有整数部分  
 System.out.println(new DecimalFormat("#").format(pi));//3  
//以百分比方式计数,并取两位小数  
 System.out.println(new DecimalFormat("#.##%").format(pi));//314.16%  

long c=299792458;//光速  
//显示为科学计数法,并取五位小数  
System.out.println(new DecimalFormat("#.#####E0").format(c));//2.99792E8  
//显示为两位整数的科学计数法,并取四位小数  
System.out.println(new DecimalFormat("00.####E0").format(c));//29.9792E7  
//每三位以逗号进行分隔。  
System.out.println(new DecimalFormat(",###").format(c));//299,792,458  
//将格式嵌入文本  
 System.out.println(new DecimalFormat("光速大小为每秒,###米").format(c)); 
 //光速大小为每秒299,792,458米

特殊字符说明
“0” 指定位置不存在数字则显示为0 123.123 ->0000.0000 ->0123.1230
“#” 指定位置不存在数字则不显示 123.123 -> ####.#### ->123.123
“.” 小数点
“%” 会将结果数字乘以100 后面再加上% 123.123 ->#.00->1.3212%

还有我室友这种,创建对象的方法噢:

DecimalFormat df = new DecimalFormat("0.000");
System.out.print(df.format(val[n]));
MARK Ⅱ ending
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值