首页 > 编程语言 >java的double、float类型的比较

java的double、float类型的比较

时间:2023-11-10 16:13:03浏览次数:50  
标签:Float java BigDecimal double float toString doubleToLongBits Double new

在java中,针对double、float类型的运算和比较都最好不要直接进行,可以依靠BigDecimal来进行

一、比较大小

  • 转换成 long 再比较,(这是long是基本类型,而不是Long对象,对象比较不要用 ==)
Double.doubleToLongBits(0.042421d) ==  Double.doubleToLongBits(0.2342401d)

Double.doubleToLongBits(453.02d) > Double.doubleToLongBits(34.234501d)   

Double.doubleToLongBits(765.07452d) < Double.doubleToLongBits(23432.3034d)
  • 转换成字符串,然后用equals比较 (只能用于比较是不是相等
Float.toString(453.2348f).equals(Float.toString(0.342f))

Double.toString(0.8456d).equals(Float.toString(0.242f))

二、运算

  • 加法:add()函数
  • 减法:subtract()函数
  • 乘法:multiply()函数
  • 除法:divide()函数
  • 绝对值:abs()函数
// 0.5382 * 0.78
new BigDecimal(Float.toString(0.5382f)).multiply(new BigDecimal(Float.toString(0.78f)))
// 错误的方式 new BigDecimal(0.5382f).multiply(new BigDecimal(0.78f))

注意❗:要使用new BigDecimal(Float.toString(0.5382f))而不是new BigDecimal(0.5382f) ,里面先转成字符串,否则还是可能丢精度

标签:Float,java,BigDecimal,double,float,toString,doubleToLongBits,Double,new
From: https://www.cnblogs.com/CodingSh1t/p/17824350.html

相关文章

  • 深入学习JavaScript ES8函数式编程:特性与实践指南
    ......
  • 秦疆的Java课程:24 基础 数据类型扩展及面试题讲解
    1、整数扩展进制二进制数:0b开头八进制数:0开头十六进制数:0x开头publicclassDEMO1{publicstaticvoidmain(String[]args){//整数扩展:进制intA=10;intB=0b10;//二进制intC=010;//八进制intD......
  • 小程序性能优化之JavaScript代码优化
    大家好,今天我们来聊一聊小程序性能优化中的JavaScript代码优化。在编程过程中,我们都喜欢轻松愉快,不想戴着沉重的“全局疯狂”帽子。但有时候,过度使用全局变量会让我们的程序变得难以维护,就像在一片大森林里找寻一个小木屋。这时候,我们就需要考虑一下,是不是该减轻一下我们的“全局疯......
  • 11月10日浮动float以及清除浮动clear
    目录浮动浮动的需要的属性float当float的值为left时当float值为right时当float属性值为none时float属性值为inherit时浮动的特殊情况1.多个浮动在浮动的时候如果包含框太窄,无法容纳对应的浮动元素就会两种情况一种就是其中一个框下降,第二种情况就是其中一个框被卡住了下降的代码cl......
  • 有趣的Java之Spring Security
    说明SpringSecurity是一个功能强大且高度可定制的身份验证和访问控制框架。SpringSecurity是一个专注于为Java应用程序提供身份验证和授权的框架。与所有Spring项目一样,Spring安全性的真正威力在于它可以很容易地扩展以满足定制需求。一般Web应用的需要进行认证和授权。用户认证......
  • java如何声明一个对象
    在Java中,声明一个对象有多种方式。以下是其中几种常用的方式:1.使用关键字`new`:使用这种方式声明一个对象,会调用类的构造函数创建对象的实例。ClassNameobj=newClassName();其中,`ClassName`是类的名称,`obj`是对象的引用。2.使用类的静态方法:某些类提供了静态方法来创建对......
  • JAVA生成16位唯一字符串
      importlombok.extern.slf4j.Slf4j;importjava.util.Random;importjava.util.UUID;publicclassRandomUtils{privatestaticlonggetRandom(longn){longmin=1,max=9;for(inti=1;i<n;i++){min*=1......
  • java写一个自动爬取统计局公开数据的程序
    在Java中,爬取网站内容的最常用的库是Jsoup。以下是一个简单的爬虫程序示例,它将爬取统计局网站上的公开采集内容:importorg.jsoup.Jsoup;importorg.jsoup.nodes.Document;importorg.jsoup.nodes.Element;importorg.jsoup.select.Elements;importjava.io.IOException;publ......
  • Java日志框架概览
     SLF4J提供统一的日志门面API,即图中紫色部分,实现中立的日志记录API桥接功能,蓝色部分,把各种日志框架API(绿色部分)桥接到SLF4JAPI。这样即便你的程序中使用各种日志API记录日志,最终都可桥接到SLF4J门面API。适配功能,红色部分,可实现SLF4JAPI和实际日志框架(灰色部分)绑定。SLF4J只是......
  • JavaScript的BOM和document编程方法汇总和实例-----前端
    //总结浏览器往服务器发请求          //表单,超链接          //document.location文本重定向          //window.location窗口重定向          //window.open()请求地址       ......