Java BigInteger类和BigDecimal()类

BigInteger类

  • BigInteger 支持任意精度的整数,可以准确的表达任何大小的整数而不丢失精准度

  • BigInteger 位于 java.math包中

  • BigInteger()括号里必须是字符串

  • BigInteger a = new BigInteger("8888888888888888");
    BigInteger b = new BigInteger("9999999999999999");
    

运算方法add(),subtract(),multiply(),divide()

  • 注意:divide方法里默认无限小数会报错,所以必须使用divide方法规定小数位数

add()

a.add(b);

subtract()减法

a.subtract(b);

multiply()乘法

a.multiply(b);

divide()除法

a.divide(b,3,BigDecimal.ROUND_DOWN);

取三位小数,第三个是取整方式

注:

public int[] plusOne(int[] digits) {
        BigInteger bigInteger =new BigInteger(Arrays.toString(digits));
        BigInteger bigInteger1 = new BigInteger("1");
        bigInteger.add(bigInteger1);
        byte[] bytes = bigInteger.toByteArray();
        Arrays.copyOf(digits,bytes.length);
        for(int i=0;i<bytes.length;i++){
            digits[i]=bytes[i];
        }
        return digits;
    }

这个错误是 NumberFormatException,表示字符串无法转换为有效的数字。在这种情况下,错误发生在 BigInteger 的构造函数 new BigInteger(Arrays.toString(digits)) 中。

根据错误消息中的信息,输入字符串是 "[9]",这意味着 digits 数组中只有一个元素,且该元素的值为 9。然而,Arrays.toString(digits) 方法将数组转换为字符串时,会添加方括号和逗号,导致字符串的格式不符合 BigInteger 的要求

修改后

public int[] plusOne(int[] digits) {
    BigInteger bigInteger = BigInteger.ZERO;
    for (int i = 0; i < digits.length; i++) {
     	bigInteger = 			       bigInteger.multiply(BigInteger.TEN).add(BigInteger.valueOf(digits[i]));
    }
    bigInteger = bigInteger.add(BigInteger.ONE);
    String resultString = bigInteger.toString();
    int[] result = new int[resultString.length()];
    for (int i = 0; i < resultString.length(); i++) {
        result[i] = Character.getNumericValue(resultString.charAt(i));
    }
    return result;
}

BigDecimal()类

  • 由于Double类型运算有精度损失,所以需要使用BigDecimal类来运算,BigDecimal类运算浮点不会有精度损失,但必须传入String类型
  • 运算方法与BigInteger一样
posted @   Yang0710  阅读(6)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
  1. 1 イエスタデイ(翻自 Official髭男dism) 茶泡饭,春茶,kobasolo
  2. 2 世间美好与你环环相扣 柏松
イエスタデイ(翻自 Official髭男dism) - 茶泡饭,春茶,kobasolo
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.

作词 : 藤原聡

作曲 : 藤原聡

何度失ったって

取り返して見せるよ

雨上がり 虹がかかった空みたいな

君の笑みを

例えばその代償に

誰かの表情を

曇らせてしまったっていい

悪者は僕だけでいい

本当はいつでも

誰もと思いやりあっていたい

でもそんな悠長な理想論は

ここで捨てなくちゃな

遥か先で 君へ 狙いを定めた恐怖を

遥か先で 君へ 狙いを定めた恐怖を

どれだけ僕は

はらい切れるんだろう?

半信半疑で 世間体

半信半疑で 世間体

気にしてばっかのイエスタデイ

ポケットの中で怯えたこの手は

まだ忘れられないまま

「何度傷ついたって

「何度傷ついたって

仕方ないよ」と言って

うつむいて君が溢した

儚くなまぬるい涙

ただの一粒だって

僕を不甲斐なさで 溺れさせて

理性を奪うには十分過ぎた

街のクラクションもサイレンも

街のクラクションもサイレンも

届きやしないほど

遥か先へ進め 身勝手すぎる恋だと

遥か先へ進め 身勝手すぎる恋だと

世界が後ろから指差しても

振り向かず進め必死で

振り向かず進め必死で

君の元へ急ぐよ

道の途中で聞こえたSOS さえ

気づかないふりで

バイバイイエスタデイ ごめんね

バイバイイエスタデイ ごめんね

名残惜しいけど行くよ

いつかの憧れと違う僕でも

ただ1人だけ 君だけ

守るための強さを

何よりも望んでいた この手に今

遥か先へ進め

遥か先へ進め

幼すぎる恋だと

世界が後ろから指差しても

迷わずに進め 進め

2人だけの宇宙へと

ポケットの中で震えたこの手で今

君を連れ出して

未来の僕は知らない

だから視線は止まらない

謎めいた表現技法

意味深な君の気性

アイラブユーさえ

アイラブユーさえ

風に 飛ばされそうな時でも

不器用ながら繋いだ この手はもう

決して離さずに

虹の先へ

点击右上角即可分享
微信分享提示