BigInteger 大整数 比较大小

 一、以整数型礼品交易为例子

int userSend = Integer.valueOf(id);int amount = Integer.valueOf(amountStr);int userAccept = Integer.valueOf(userIdAccept);GiftService giftService = new GiftService();boolean carry1 = giftService.isHavePropertyByUserIdByGiftId(userSend, 1);boolean carry2 = giftService.isHavePropertyByUserIdByGiftId(userAccept, 1);if (carry1 && carry2) {BigInteger userSendCurrentAmount = giftService.getAmountByUserIdAndGiftId(userSend, 1);BigInteger amountBigInt = BigInteger.valueOf(amount);if (userSendCurrentAmount.compareTo(amountBigInt) > 0 && userSendCurrentAmount.compareTo(BigInteger.ZERO) > 0 && amountBigInt.compareTo(BigInteger.ZERO) > 0) {// 执行交易操作} else {// 处理金额不足或者金额为负的情况}} else {ResponseReturnWriterUtil.writeListResponse2(response, 1, "\"双方都持有相应账户才可进行交易\"");}
  1. userSendCurrentAmount.compareTo(amountBigInt) > 0:这部分代码比较了 userSendCurrentAmountamountBigInt 两个 BigInteger 对象的大小关系。如果 userSendCurrentAmount 大于 amountBigInt,则返回一个大于 0 的值,表示满足交易条件。这个条件确保了发送者拥有的账户余额  数量大于交易中要转移的数量。

  2. userSendCurrentAmount.compareTo(BigInteger.ZERO) > 0:这部分代码确保 userSendCurrentAmount 大于零。这是因为在正常情况下,用户拥有的账户余额  数量应该大于等于零,不能为负数。这个条件是对用户当前拥有的账户余额  数量进行验证。

  3. amountBigInt.compareTo(BigInteger.ZERO) > 0:这部分代码确保 amountBigInt(即交易中要转移的数量)也大于零。因为在交易中,转移的数量应该是正数,不能为零或负数。

综合这三个条件,只有当发送者拥有的账户余额 数量大于交易中要转移的数量,并且这两个数量都大于零时,才会执行交易操作。如果不满足这些条件,则会执行注释为"处理金额不足或者金额为负的情况"的部分代码,即处理交易条件不满足的情况。

二、介绍bigInteger

BigInteger 是 Java 中的一个类,用于表示任意精度的整数。在 Java 中,基本的整数类型(如 intlong 等)有其范围限制,超出范围后会出现溢出的情况。而 BigInteger 类可以表示任意大小的整数,因此可以用于处理大整数计算,例如在金融领域或密码学中经常会用到。

BigInteger 类的一些重要特点和用法:

  1. 任意精度整数: BigInteger 类可以表示任意大小的整数,不受 Java 基本整数类型的范围限制。
  2. 不可变性: BigInteger 对象一旦创建,就不能修改其值。任何对 BigInteger 对象的运算操作都会生成一个新的 BigInteger 对象。
  3. 支持常见的整数运算操作: BigInteger 类提供了丰富的方法来进行整数的加、减、乘、除等运算操作。
  4. 提供比较和判断方法: BigInteger 类提供了 compareTo 方法来比较两个 BigInteger 对象的大小关系,以及 equals 方法来判断两个 BigInteger 对象是否相等。
  5. 不支持基本类型自动装箱: 由于 BigInteger 是一个类而不是基本数据类型,因此不能直接使用基本类型的运算符对 BigInteger 对象进行操作。需要使用 BigInteger 类提供的方法来进行运算。
  6. 静态工厂方法: BigInteger 类提供了一些静态工厂方法来创建 BigInteger 对象,例如 valueOf(long val) 可以将一个 long 类型的值转换为 BigInteger 对象。

BigInteger 类是 Java 中用于表示任意精度整数的类,可以在需要处理大整数计算的场景中发挥重要作用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/792134.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Minikube本地搭建单节点Kubernetes集群

1、什么是 Minikube Minikube 是一个开源工具,旨在为开发者提供一种便捷的方式在本地环境中搭建单节点的 Kubernetes 集群。它主要用于开发、测试和学习 Kubernetes 应用程序,无需依赖大型的硬件资源或复杂的多节点集群配置。minikube 使用轻量级虚拟化技…

C/C++程序的(编译,链接)翻译与运行

目录 前言: 1.程序环境 2.翻译环境 3.预处理(预编译) 4.编译 5.汇编 6.链接 7.运行环境 总结: 前言: 本篇来解释c/c程序的翻译环境与运行环境中的过程,不同的编程语言的翻译环境类似,…

Transformers in Vision:A Survey 阅读笔记

ACM上的一篇综述,讨论Transformer在CV上的应用。 摘要: Among their salient benefits,Transformers enable modeling long dependencies between inputsequence elements and support parallel processing of sequence as compared to recurrent networ…

信息传播的AI时代:机器学习赋能新闻出版业的数字化之旅

🧑 作者简介:阿里巴巴嵌入式技术专家,深耕嵌入式人工智能领域,具备多年的嵌入式硬件产品研发管理经验。 📒 博客介绍:分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向的学习指导…

leetcode90. 子集 II

去重逻辑: 关键是画出递归树!当我们即将进入第二个2的递归的时候,发现isVisit数组是100,也就是说这俩重复的数是False,并且这俩在nums值相同,所以写出去重逻辑! class Solution { public:vector…

leetcode代码记录(打家劫舍 II

目录 1. 题目:2. 我的代码:小结: 1. 题目: 一个专业的小偷,计划偷窃一个环形街道上沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都 围成一圈 ,这意味着第一个房屋和最后一个房屋是…

【随笔】Git -- 高级命令(上篇)(六)

💌 所属专栏:【Git】 😀 作  者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! 💖 欢迎大…

【面试八股总结】超文本传输协议HTTP(二)

参考资料 :小林Coding、阿秀、代码随想录 一、HTTP缓存技术 将资源(如网页、图像、脚本等)的副本存储在客户端或中间代理服务器上,以便将来的请求可以直接从缓存中获取,而不必重新从服务器下载资源。这有助于减少网…

二维码:技术、商业与未来

title: 二维码:技术、商业与未来 date: 2024/4/3 19:12:28 updated: 2024/4/3 19:12:28 tags: 二维码技术商业应用移动支付物联网AR/VR融合智能家居数字化社会 第一章:引言 1. 二维码在数字化时代的重要性和普及程度 在数字化时代,二维码作…

JVM之常用监控工具

JVM之常用监控工具 jps jinfo 获取配置信息 基本语法 jinfo [options] <pid>常用选项 -sysprops&#xff1a;显示JVM进程的系统属性。-flags&#xff1a;显示用于启动JVM的命令行标志和VM选项。-flag <name>&#xff1a;显示指定JVM标志的当前值。-flag [|-]&…

Windows10安装CloudCompare(图文安装)

CloudCompare是一个3D点云&#xff08;和三角网格&#xff09;处理软件。它最初被设计用于在两个密集的3D点云&#xff08;例如用激光扫描仪获取的点云&#xff09;之间或点云和三角形网格之间进行比较。它依赖于专用于此任务的特定八叉树结构。 之后&#xff0c;它已经扩展到一…

[实验报告]--基于端口安全

[实验报告] 目录 [实验报告] 一、项目背景 二、实验环境 三、项目规划设计 四、项目实施 五、验证项目成果 基于端口安全的 Jan16 公司网络组建 一、项目背景 Jan16 公司开发部为重要部门&#xff0c;所有员工使用指定的计算机工作&#xff0c;为防止员工或访客使 用个…

java中Date类,SimpleDateFormat类和Calendar类

Date类 public Date() 创建一个Date对象&#xff0c;代表的是系统当前此刻的日期时间 public Date(long date) Constructs a Date object using the given milliseconds time value. 把时间毫秒值转变成Date日期对象 public void setTime(long date) Sets an existing Date ob…

深度解析大语言模型中的词向量

在学习完语言模型中的编码器与解码器知识后&#xff0c;让我们继续深入学习大语言模型中一个非常关键的技术&#xff1a;词向量表示&#xff0c;以及如何通过Transformer模型实现对next token的预测。 1、词向量 要了解语言模型的工作原理&#xff0c;首先需要了解它们如何表示…

C#.net6.0手术麻醉信息管理系统源码,智慧手术室管理平台源码

手术麻醉信息管理系统源码&#xff0c;自主版权的手麻系统源码 手术麻醉信息管理系统包含了患者从预约申请手术到术前、术中、术后的流程控制。手术麻醉信息管理系统主要是由监护设备数据采集子系统和麻醉临床系统两个子部分组成。包括从手术申请到手术分配&#xff0c;再到术前…

element-ui collapse 组件源码分享

今日简单分享 collapse 组件的源码实现&#xff0c;主要分为四个方面&#xff1a; 1、collapse 组件页面结构 2、collapse 组件属性 3、collapse 组件事件 4、collapse item 组件属性 一、collapse 组件页面结构 二、collapse 组件属性 2.1 value/v-model 属性&#xff0…

Ubuntu18.04+2070s+TF2.x环境,单卡训练PointNet++实战

Ubuntu18.042070sTF2.x环境&#xff0c;单卡训练PointNet实战 1. 编译tf_ops文件夹下的三个动态库2. 修改Python版本、TF版本不一致带来的差异3. 下载训练数据4. 模型训练 1. 编译tf_ops文件夹下的三个动态库 该文件夹下定义了一些pointnet模型中需要使用的cuda核函数&#xf…

程序代码分析工具

文章目录 工具简介和安装DoxygenGraphziv软件安装 工具的运用启动和配置工具分析结果 工具简介和安装 Doxygen Doxygen 是一种用于从 C 、C 、Objective-C 、C# 、Java 和 Python 等语言的源代码中生成文档的工具。它通过解析源代码中的注释来创建详细的 API 文档&#xff0c;…

码农失业倒计时?全球首个大厂AI程序员来了

进入互联网时代&#xff0c;程序员作为高收入职业的代表&#xff0c;长久以来一直是众多求职者梦寐以求的工作方向。程序员们凭借其对计算机科学的深刻理解和技术创新能力&#xff0c;不仅推动了科技的进步&#xff0c;也为自己赢得了可观的经济回报。 然而&#xff0c;随着人…

多叉树题目:N 叉树的层序遍历

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法思路和算法代码复杂度分析 题目 标题和出处 标题&#xff1a;N 叉树的层序遍历 出处&#xff1a;429. N 叉树的层序遍历 难度 4 级 题目描述 要求 给定一个 N 叉树的根结点 root \texttt{root} root&#xf…