【Java】小乐乐计算函数—方法:DecimalFormat—(OJ:牛客-哈理工新生赛/1877第I题)

链接:https://ac.nowcoder.com/acm/contest/1877/I
来源:牛客网

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld

题目描述

小乐乐学会了自定义函数,BoBo老师给他出了个问题,根据以下公式计算m的值。
在这里插入图片描述
其中 max3函数为计算三个数的最大值,如: max3(1, 2, 3) 返回结果为3。

输入描述:

一行,输入三个整数,用空格隔开,分别表示a, b, c。

输出描述:

一行,一个浮点数,小数点保留2位,为计算后m的值。

输入

1 2 3

输出

0.30

方法:DecimalFormat

算法没什么好讲的,题目也很清晰,但是输出浮点数的时候出现了一个小问题。
之前不知道有这个类,所以之前输出这个浮点数的时候我都是用

System.out.printf("%.2f",x);

结果一直通过不了,多次尝试被罚了7个时,等比赛结束,我再次提交的时候发现printf只能通过90%的测试数据,经过大神指点,我使用DecimalFormat。

System.out.println(new DecimalFormat("0.00").format(x));

结果,直接通过了。。。
当时的心情,,真是,,唉。。
然后我就好好了解了一下这个DecimalFormat。

DecimalFormat 类,可以帮你将数字格式化成需要的样子。

importjava.text.DecimalFormat; 
 
public class TestNumberFormat{  
  public static void main(String[]args){ 
		doublepi=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% 

DecimalFormat 类主要靠 # 和 0 两种占位符号来指定数字长度。0 表示如果位数不足则以 0 填充,# 表示只要有可能就把数字拉上这个位置。

Java源代码

package t_牛客_哈理工新生赛_1108;

import java.text.DecimalFormat;
import java.util.Scanner;
/**
 * @Title: I.java 
 * @author Baisu 
 * @date 2019年11月9日 
 * @version 1.0
 */
public class Main {
	
	public static void main(String[] args) {
		Scanner sc = new Scanner (System.in);
		double a = sc.nextDouble();
		double b = sc.nextDouble();
		double c = sc.nextDouble();
		double x = Math.max(a+b, c);	//Math类自带max函数,可以直接使用
		double y = Math.max(a, b+c);	//max(a,b+c,c)和max(a,b,b+c)都是在判断a与b+c中的最大值
		System.out.println(new DecimalFormat("0.00").format(x/(2*y)));
	}
	
}
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值