Double型的精确四则运算

Java中金额处理选择详解:BigDecimal vs Long vs Double 特性DoubleLongBigDecimal精度不准确准确(需手动管理单位)准确范围容易溢出易溢出(但优于浮点数)几乎无限操作复杂度简单较复杂(需手动换算)丰富且灵活推荐使用场景不推荐金额处理简单金额场景金融、电商等金额计算推荐对于涉及金额的系统,优先使用BigDecimal,确保精度并降低错误风险。仅在金额简单(如无小数部分)且性能非常敏感的场景下,可考虑Long。 阅读详情
在JAVA中进行double的四则运算时,结果不一定正确
        double a = 0.05;
        
double b = 0.01;
        System.out.println(a
+b);           // 输出0.060000000000000005
        double a = 1.0;
        
double b = 0.42;
        System.out.println(a
-b);        //0.5800000000000001
        double a = 100;
        
double b = 4.015;
        System.out.println(a
*b);                  //  401.49999999999994
        double a = 123.3;
        
double b = 100;
        System.out.println(a
/b);                   //输出 1.2329999999999999
        double a = 123.4;
        
double b = 100;        System.out.println(a/b);                    // 输出 1.234  
 
对于需要精确结果的java程序,可以采用java.math.BigDecimal来实现
例如加法运算:
    public static double add(double v1,double v2){
        BigDecimal b1 
= new BigDecimal(Double.toString(v1));
        BigDecimal b2 
= new BigDecimal(Double.toString(v2));
        
return b1.add(b2).doubleValue();
    }
    
注意:此处构造BigDecimal时必须用字符串形式,否则同样达不到精确效果
    public static double minus(double v1,double v2){
        BigDecimal b1 
= new BigDecimal(v1);
        BigDecimal b2 
= new BigDecimal(v2);
        
return b1.subtract(b2).doubleValue();
    }
        double a = 1;
        
double b = 0.42;
        System.out.println(minus(a,b));                      
//0.5800000000000001
别再只盯着GPS了!手把手教你用Python仿真UWB定位,30厘米精度是怎么算出来的? 本文详细解析了UWB(超宽带)室内定位技术的原理与实现,通过Python代码演示如何从三边测量法到实现30厘米精度的定位。文章涵盖了UWB的核心数学模型、Python仿真环境搭建、误差分析及优化策略,为开发者提供了实用的技术指南和应用场景。 阅读详情

相关推荐

Fanuc机器人的坐标变换矩阵的研究2

一、Funuc用户坐标系的介绍 二、用户坐标系与世界坐标系的坐标转换 三、 以用户坐标系1为基础旋转变换后的用户坐标系 四、关于点的WPR的含义 4.1:点在用户坐标系和世界坐标系下的坐标关系 4.2 通过转换矩阵返回去推导WPR

qq_34047402的博客 1523

double等数据类型的格式

在 C 语言中,当接收一个变量的输入值,需要为变量指定类型。但在接收 double 类型变量输入时,则经常出现一些问题;在实际中,当接收 double 类型变量输入时,应指定 %lf。先将一些字符、对应数据类型及其含义的关系描述如下

Xminyang的博客 5215

告别Modern Standby噩梦:Win11睡眠断网冻结的根源剖析与S3睡眠回归实战

本文深入剖析了Windows 11中Modern Standby(现代待机)模式导致睡眠后断网、系统冻结等问题的根源,指出其与硬件驱动、后台活动的兼容性矛盾。文章提供了通过修改注册表键值强制系统回归稳定S3睡眠状态的详细实战步骤,帮助用户彻底解决睡眠故障,实现可靠的远程访问与挂机任务。

weixin_29210727的博客 604

double在c语言的运用实例,C语言double和float 实例分析

小数也称实数或浮点数。例如,0.0、75.0、4.023、0.27、-937.198 都是合法的小数。这是常见的小数的表现形式,称为十进制形式。除了十进制形式,也可以采用指数形式,例如 7.25×102、0.0368×105、100.22×10-2 等。任何小数都可以用指数形式来表示。C语言中的小数也有这两种表示形式。在书写时,十进制形式和数学中的一样,指数形式有所差异。在C语言中小数的指数形式为...

weixin_39974811的博客 381

TSC条码打印机C#例程(tsclib.dll调用) 【转】

//----program.cs using System;using System.Collections.Generic;using System.Windows.Forms; using System.Runtime.InteropServices;public class TSCLIB_DLL{[DllImport("TSCLIB.dll", EntryPoint = "abou...

weixin_33843947的博客 2441

C# 【WebService编写调用】

😹 觉得博主文章写的不错的话,希望大家三连(✌关注,✌点赞,✌评论),多多支持一下!!!

只有登上山顶,才能看到那边的风光 1173

Java精确计算

JAVA的double型数据不能进行精确计算 解决方法: java.math.BigDecimal介绍 BigDecimal的构造方法,BigDecimal是一个不变的、任意精度的有符号的十进制数对象。它提供了四个构造方法,其中有两个是用BigInteger构造的。 BigDecimal(double)是把一个double型十进制数构造为一个BigDecimal实例。 BigDecimal(String)是把一个以String表示的十进制数构造为BigDecimal实例。 (String)构造.

qq_53078834的博客 829

【光子 AI 】LangGraph:Graph = 有向有环图 + 状态机实现原理详解:数据结构模型与核心算法代码实现逻辑解析

LangGraph核心原理解析:基于Pregel模型的消息传递图,结合有向有环图和状态机特性。关键实现包括:1) 共享状态机制(TypedDict/Pydantic模型)配合Reducer逻辑实现状态更新;2) 图拓扑结构通过邻接表维护节点和条件边;3) 检查点机制支持状态持久化和恢复。运行时采用Pregel循环算法,通过超级步迭代执行节点函数、应用状态归约、条件路由下一批节点,同时支持人工中断和异步并行处理。该架构使LangGraph具备循环执行、条件跳转等DAG无法实现的动态流程控制能力。

AI天才研究院 1035

double四则运算时精度丢失问问题

double四则运算时精度丢失问问题

qq_35359474的博客 200

【FISCO-BCOS】 八、ubuntu配置Java环境

ubuntu配置Java环境需根据自己的java版本号进行细节修改,本文以jdk11.0.18版本为例。ps:通过此法还可以查看java安装路径,但必须是环境配置成功的情况下才能使用。二、添加Java环境路径。四、检查java环境设置。

naihe_fish的博客 4309

python语言字符串练习题

描述:find()方法检测字符串中是否包含子字符串str,如果指定 beg(开始)和end(结束) 范围,则检查是否包含在指定范围内,如果包含子字符串,返回字符串中,子字符串第一个字符的索引值,否则返回-1。描述:find()方法用来检测字符串中是否包含子字符串str,在指定范围内,如果包含子字符串,返回字符串中,子字符串第一个字符的位置,否则返回-1。命令行先后输入两个字符串,然后利用find()方法找出第二个字符串在第一个字符串中出现的位置。本关需要你编写一个程序,输出字符串的长度。

国家一级致癌物 2025

Java使用Bigdecimal的float和double精确计算的精度误差问题总结

1、float整数计算误差 案例:会员积分字段采用float类型,导致计算会员积分时,7位整数的数据计算结果出现误差。 原因:超出float精度范围,无法精确计算。 float和double的精度是由尾数的位数来决定的。浮点数在内存中是按科学计数法来存储的,其整数部分始终是一个隐含着的“1”,由于它是不变的,故不能对精度造成影响。 float:2^23 = 8388608,一共七位,这意味...

裸睡的鱼 2333

基于MATLAB的多无人机多任务调度算法——CBBA带时间窗

本文将介绍基于MATLAB的CBBA算法,并对其进行改进,加入时间窗概念,以提高多无人机系统的调度效率和性能。时间窗用于限定任务的执行时间范围,以避免任务执行时间过长或过短导致的问题。具体而言,我们为每个任务设置一个允许的最早开始时间和最晚结束时间,并在任务分配的过程中考虑这些时间约束。在多无人机系统中,需要将若干个任务分配给不同的无人机完成,以实现高效的任务执行。以上是关于基于MATLAB的多无人机多任务调度算法CBBA带时间窗的简要介绍和源代码实现。多无人机系统的调度问题。

BUG?不存在的! 1898

double java 坑,Java中四则运算的那些坑

使用Java开发多年,感觉自己的水平也在不断提升,但是被Java狂虐却从来都没变过,而且任何一个Java的小角落,都能把我虐的体无完肤,但是无奈要靠Java吃饭,还得恬着脸继续使用下去。说说最近遇到的问题,则于新工作属于互联网金融,所以里面涉及到了大量的资金计算,资金计算对数字要求的比较严谨,作为一个粗心而又自大的Java程序员,一直没把这个当回事儿,于是又被Java吊打一遍。下面记录一下Java...

weixin_42520780的博客 477

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Double类型四则运算精度问题

Double类型四则运算精度问题 今天碰巧遇到一个小问题,在两个double类型相加减的时候遇到了一些精度问题; 你看,这个结果为什么会出现这样呢?其实计算机在运算时并不会以十进制的形式去运算,而是以二进制的形式去运算。所以就会出现这种精度问题。那在java中也有对应的方法去解决这种问题。 就拿乘法来举个栗子吧。 这里我把问题写成一个方法,使用时只需要传两个需要相乘的数最后直接返回一个double类型。 BigDecimal:Java在java.math包中提供的API类BigDecimal,用来对超过1

qq_42766680的博客 561

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

四则运算(Double类型数)工具类

--double 类型数据的加、减、乘、除、四舍五入 运算-注意:当前除法运算保留小数位不准确,很抱歉。可以使用,String的split方法,自行处理。-ArithmeticDouble.javapackage com.my.test;import java.math.BigDecimal;/** * Description: 四则运算(Double类型数) * Copyright : Co

Jusenr的博客 1033

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Java中使用long类型实现精确的四则运算

引子Effective Java 2nd Edition 第48条建议:如果需要精确的答案,请避免使用float和doble。float和double类型主要是为了科学计算和工程计算而设计的。他们执行二进制制浮点运算(binary floating-point arithmetic),这是为了在广泛的数值范围上提供较为精确的快速近似计算而精心设计的。然而,他们并没有提供完全精确的结果,所以不应该被用

Rainnnbow 2万+

Java Double类型精确运算解决

Java中的简单浮点数类型float和double不能够进行运算。 首先我们想到的是四舍五入,Math类中的round方法不能设置保留几位小数,我们只能像这样(例如保留两位) Math.round(value * 100) / 100.0; 非常不幸,上面的代码不能解决包含小数位精度问题,类似400.0000000009,或者整数差0.00000000001的问题。 其次我们会使用Big...

工作笔记 3298

精确计算_double,BigDecimal

其它资源:http://blog.csdn.net/lhooouuu/article/details/7086880 在金额的计算中需要精确计算,而double肯定是不行的。BigDecimal的计算中也要注意一些问题。看案例:import java.math.BigDecimal; import java.text.NumberFormat;import org.junit.Test;/**

天外来客的博客 1462

精确计算时,不要使用float或double

照例,还是来一段Effective Java的内容。内容大家应该已经都熟悉,不过还是发现很多新人完全不清楚,所以拿来共享一下。 一、病例: System.out.println(1.03 - 0.42); // 0.6100000000000001 System.out.println(1.00 - 9 * 0.10); // 0.09999999999999998 又比如,每个单价0.10元,0.20元,0.30元,0.40元……,每种比前一种多0.10元。每样买一个,1元钱能买几个,找零多少 pu

Aphadite的博客 833

JAVA精确计算

  double型数据不能进行精确计算 JAVA的double型数据不能进行精确计算,许多编程语言也是一样。请看下面的例子: 从这个例子可以看出计算的结果出现了误差,所以用double型数据进行金额计算是不可靠的。    四舍五入**(截断) 上面这个例子中,如果把计算结果按照指定的位数进行四舍五入,似乎就是我们想要的结果,但是在数学计算中四舍五入意味着误差,并且JDK中没有提供...

weixin_40760196的博客 1万+

Java浮点数float,bigdecimal和double精确计算的精度误差问题总结

(转)Java浮点数float,bigdecimal和double精确计算的精度误差问题总结 1、float整数计算误差 案例:会员积分字段采用float类型,导致计算会员积分时,7位整数的数据计算结果出现误差。 原因:超出float精度范围,无法精确计算。 float和double的精度是由尾数的位数来决定的。浮点数在内存中是按科学计数法来存储的,其整数部分始终是一个隐含着...

agnsm00804的专栏 284

java浮点数double_Java浮点数float,bigdecimal和double精确计算的精度误差问题总结

1、float整数计算误差案例:会员积分字段采用float类型,导致计算会员积分时,7位整数的数据计算结果出现误差。原因:超出float精度范围,无法精确计算。float和double的精度是由尾数的位数来决定的。浮点数在内存中是按科学计数法来存储的,其整数部分始终是一个隐含着的“1”,由于它是不变的,故不能对精度造成影响。float:2^23 = 8388608,一共七位,这意味着最多能有7位有...

weixin_39820158的博客 484

Java浮点数float和double精确计算的精度误差问题总结

1、float整数计算误差 案例:会员积分字段采用float类型,导致计算会员积分时,7位整数的数据计算结果出现误差。 原因:超出float精度范围,无法精确计算。 float和double的精度是由尾数的位数来决定的。浮点数在内存中是按科学计数法来存储的,其整数部分始终是一个隐含着的“1”,由于它是不变的,故不能对精度造成影响。 float:2^23 = 8388608,一共七位,这意味

极客on之路 1308
上一篇: The JDesktop Integration Components (JDIC) Introduction
下一篇: 学习配置Sun JAVA System Application Server 中的数据源
kingquake21
博客等级 码龄20年 23粉丝 131原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值