如何解决类似1-0.2=0.80000001,而不是0.8

问题描述

我在做一个计算器程序,里面要用到小数计算,就会出现类似1-0.2=0.80000001的问题跪求如何解决

解决方案

解决方案二:
classBigDecimal可破
解决方案三:
引用1楼kiyoki的回复:

classBigDecimal可破

我想让1-0.2=0.8这做到了吗我不是嫌他精确度低,而是嫌他精确度太高了
解决方案四:
doubleaa=1;doublebb=0.2;System.out.println(Double.parseDouble(newBigDecimal(String.valueOf(aa)).subtract(newBigDecimal(String.valueOf(bb))).toString()));

解决方案五:
引用2楼u013596294的回复:

Quote: 引用1楼kiyoki的回复:
classBigDecimal可破

我想让1-0.2=0.8这做到了吗我不是嫌他精确度低,而是嫌他精确度太高了

BigDecimal可以做到的
解决方案六:
浮点类型等得用专门的数据类型。
解决方案七:
浮点数就这养,根据你自己的需要保留几位小数就行了
解决方案八:
这样直接加减容易有误差的推荐用BigDecimalnewBigDecimal("1").subtract(newBigDecimal("0.2")).doubleValue()

解决方案九:
这个问题不光java语言存在,其它语言也存在,用BigDecimal处理。
解决方案十:
引用4楼aaron_gzt的回复:

Quote: 引用2楼u013596294的回复:
Quote: 引用1楼kiyoki的回复:
classBigDecimal可破

我想让1-0.2=0.8这做到了吗我不是嫌他精确度低,而是嫌他精确度太高了

BigDecimal可以做到的

谢谢的确解决了但是还想问您一个问题就是bigdecimal遇到1/3这样的就处理不了啊····怎么办
解决方案十一:
引用3楼ghostkngiht的回复:

doubleaa=1;doublebb=0.2;System.out.println(Double.parseDouble(newBigDecimal(String.valueOf(aa)).subtract(newBigDecimal(String.valueOf(bb))).toString()));

赞一个学习了

时间: 2024-08-20 05:43:12

如何解决类似1-0.2=0.80000001,而不是0.8的相关文章

C中,(int)-0.5=-1,java中,(int)-0.5=0;java有没有类似算法

问题描述 C中,(int)-0.5=-1,java中,(int)-0.5=0;java有没有类似算法 C的这种方法的浮点整数映射上是线性的,java的方法在0附近将发生重叠,这样的话,在实数域处理问题要分类讨论,不方便. 方法好像有Math.floor(),不知道还有没有简单的表达式 解决方案 (int)-0.5=-1 这个才是科学的,因为int永远是找比自身小的最大整数. java需要判断 double d = -0.5; int r = d > 0? (int)d : (int)d - 1;

框架-用WPF做VLC视频播放器,如何解决.Net Framework版本的转换(只能使用2.0吗?)

问题描述 用WPF做VLC视频播放器,如何解决.Net Framework版本的转换(只能使用2.0吗?) 当进行如上调用时,会出现如下错误信息 对 PInvoke 函数"ClientLibrary.Controls.LibVlcAPI::libvlc_new"的调用导致堆栈不对称.原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配.请检查 PInvoke 签名的调用约定和参数与非托管的目标签名是否匹配. _最开始项目是framework2.0框架,现在是framework

Windows 平台10.2.0.1 升级到10.2.0.4 报msvcr71.dll错误解决

Windows 平台10.2.0.1 升级到10.2.0.4 报msvcr71.dll错误解决    问题分析: 肯定是因为MSVCR71.dll文件占用所致. 故需要检查服务和进程是否完全正常关闭. 问题解决思路: 通过检查所有的Oracle服务是否关闭. 找到MSVCR71.dll被哪个进程所占用,将其停止. 参考如下: MSVCR71.DLL 更新时在使用 找到用该DLL的进程,具体方法如下: MSVCR71.DLL is in use during Oracle patch instal

解决用户实际法律问题的法律搜索引擎3.0版

(此文为最近上海商报专访本人的文章,作者:上海商报 记者王哲) "大状"是粤语里对"律师"的称呼,老百姓如果在生活中遇到法律问题,都希望可以聘请专属的律师全权为自己代理.而作为国内第一家法律服务垂直搜索引擎,CEO马强把近日上线的"大状网"比做法律行业的"天猫商城"--最真实最全面的法律案例和最权威最海量的律师大状们都汇聚于此.人们通过大状网的聚焦型层级搜索,找到共鸣案例做出比较后,从而找到合适的律师进行咨询代理. 解决用户实

java ee-求教JavaEE5.0项目如何更改成6.0项目

问题描述 求教JavaEE5.0项目如何更改成6.0项目 项目中需要接入第三方功能接口,那些接口需要高版本的.求教各位大神应该如何解决配置服务器.我用的是Tomcat服务器. 解决方案 参考:http://jingyan.baidu.com/article/363872ec326a236e4ba16f30.html

Win2003+IIS6.0+php5.2.2+MySQL 5.0.41+ZendOptimizer 3.2.8+phpMyAdmin 2.10.1环境配置安装教程图文详解 _服务器

Win2003+IIS6.0+php5.2.2+MySQL 5.0.41+ZendOptimizer 3.2.8 +phpMyAdmin 2.10.1环境配置安装教程详解  本教程由IT坊资讯网www.ithov.com原创发布,转载请注明出处本次安装所使用的相关软件如下: 操作系统:Windows 2003 企业版 SP2 +IIS6.0  php版本:php-5.2.2-Win32.zip  下载地址:http://soft.ithov.com/2007/200705/Soft_15259.

PATCHSET 10.1.0.3&9.2.0.5

patchset  3761843   for   oracle 10.1.0.3  升级10.1.0.2 到10.1.0.3   patchset  3501955   for   oracle  9.2.0.4  升级到 9.2.0.5  不过升级后还是要打和alert#68 相关的那个PATCH 3811906  这样才完整文件名称为10.1.0.3  p3761843_10103_LINUX.zip  551M9.2.0.5   p3501955_9205_LINUX.zip   313

IE5.0、IE5.5、IE6.0、IE7.0、FF1.5、FF2.0兼容CSS Hack代码范例

css IE7.0简体中文正式版终于发布了,对于我等常和网页打交道的人来说网页兼容性问题也随之而来了.IE7.0有一个显著的改变就是支持!important了,是件好事情,但是也给广大的在IE6时代使用!important来区分处理IE和FF的网页制作者带来了不少问题,Noker也遇到了这个问题,所以翻阅网上资料,写了下面这个能够兼容现今大多数主流浏览器,覆盖绝大多数用户的Hack代码,发布在自己的论坛上,供大家查看,研究,取用.如有相关问题欢迎跟贴探讨,谢谢! 兼容浏览器版本:IE5.0,IE

关于asp.net 1.0升级到asp.net 2.0时发现的一个有趣的问题

asp.net|问题     今天终于把原来的asp.net 1.0程序升级到asp.net 2.0了,vs 2005带有转换向导,一切自动化,操作比较方便.等它自动转换后,突然发现在App_Code文件夹里多了几个比较奇怪的文件都是stub开头的,并在一个mi开头的文件夹中(具体名称因为删除了,忘记了),因为原来根本就没有这些.cs文件,打开一看,原来都是抽象类,有几个还有抽象方法和共有字段.经过查看,才发现,原来在asp.net 1.0中有几个页面后置文件即.aspx.cs文件,里面有pub

Visual Studio-Visual Studio 2010中的实体框架4.0和WCF数据服务4.0

在诸多新改进之中,Visual Studio 2010 引入了用户期待已久的实体框架 4.0 和 WCF 数据服务 4.0(以前称为 ADO.NET 数据服务),这两项功能综合起来,简化了您建立数据模型.使用数据和生成数据的方式. 实体框架 4.0 (EF 4.0) 致力于启用和简化两种主要方案:以域为中心的应用程序开发和传统以数据为中心的"基于数据的窗体设计".它引入了诸如模型优先开发等功能(该功能允许您创建模型并为您生成自定义 T-SQL):对持久化透明的支持:外键:延迟加载以及实