1001 Exponentiation

本文介绍了一个使用Java进行高精度计算的例子,重点展示了如何处理小数运算中多余的零以及特殊情况的处理方式,通过具体代码实现说明了如何利用BigDecimal类进行幂运算。

高精度,直接用java水过..第一个java题

要注意的是

3.0 3   处理末尾多余的0

0.000 3   都是0

  1. //4451279_AC_157MS_2592K
  2. import java.util.*;
  3. import java.math.*;
  4. public class Main {
  5.     public static void main(String args[]) throws Exception {
  6.         Scanner cin = new Scanner(System.in);
  7.         while (cin.hasNext()) {
  8.             BigDecimal m = cin.nextBigDecimal();
  9.             int r = cin.nextInt();
  10.             String s = m.pow(r).toPlainString();
  11.             if (s.indexOf('.') != -1) {
  12.                 int i;
  13.                 for (i = s.length() - 1; i >= 0; --i) {
  14.                     if (s.charAt(i) == '0') {
  15.                         continue;
  16.                     } else {
  17.                         break;
  18.                     }
  19.                 }
  20.                 if (i != s.length() - 1) {
  21.                     s = s.substring(0, i+1);
  22.                 }
  23.                 if (s.charAt(s.length()-1) == '.') {
  24.                     s = s.substring(0,s.length()-1);
  25.                 }
  26.             }
  27.             if (s.charAt(0) == '0') {
  28.                 s = s.substring(1);
  29.             }
  30.             System.out.println(s);
  31.         }
  32.     }
  33. }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值