HDU 2054(Java版)

2 篇文章 0 订阅

题目大意

输入两个数,判断两个数是否相等。

Sample Input

1 2
2 2
3 3
4 3

Sample Output

NO
YES
YES
NO

注意

虽然样例里给的都是整数,但是,实际上本题本质上考的是大数之间的比较。因为没有确定数据范围和是否为整数所以需要考虑不是整数和超出位数的情况。
- 只需考虑小数点后有多个0的情况,比如1.000 和 1比较
- 不需要考虑前导0,即不会出现0000100
- 不需考虑正负号,即只有无符号数

关于一些Java的函数

public boolean equals(Object x)
比较此 BigDecimal 与指定的 Object 的相等性。与 compareTo ()不同,仅当两个 BigDecimal 对象的值和标度都相等时,此方法才认为它们相等(因此通过此方法进行比较时,2.0 不等于 2.00)。
stripTrailingZeros(),API原文
public BigDecimal stripTrailingZeros()
返回数值上等于此小数,但从该表示形式移除所有尾部零的 BigDecimal。
例如,从 BigDecimal 值 600.0 中移除尾部零,该值具有的 [BigInteger, scale] 组件等于 [6000, 1],
使用 [BigInteger, scale] 组件生成的 6E2 等于 [6, -2]
返回:数值上等于移除所有尾部零的 BigDecimal。

选择使用该方法,直接用compareTo(),API原文:
public int compareTo(BigDecimal val)将此 BigDecimal 与指定的 BigDecimal 比较。根据此方法,值相等但具有不同标度的两个 BigDecimal 对象(如,2.0 和 2.00)被认为是相等的。相对六个 boolean 比较运算符 (<, ==, >, >=, !=, <=) 中每一个运算符的各个方法,优先提供此方法。
建议使用以下语句执行上述比较:(x.compareTo(y) 0),其中 是六个比较运算符之一。
指定者:
接口 Comparable 中的 compareTo
参数:
val - 将此 BigDecimal 与之比较的 BigDecimal。
返回:
当此 BigDecimal 在数字上小于、等于或大于 val 时,返回 -1、0 或 1。

附上代码:

import java.math.*;
import java.util.Scanner;
import java.util.StringTokenizer;
import java.io.*;
import java.util.Scanner;
public class Main {
    private static BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
    private static PrintWriter stdOut = new PrintWriter(System.out, true);

    public static void main(String[] args) throws IOException {
    Scanner sc= new Scanner(System.in);
    while(sc.hasNext()) {
        BigDecimal a=sc.nextBigDecimal();//大数类
        BigDecimal b=sc.nextBigDecimal();
    if(a.compareTo(b)==0)
    {
        System.out.println("YES");
    }
    else {
        System.out.println("NO");
    }
    }
    }

}
/*好久没写java代码了*/
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值