社区
Java SE
帖子详情
神奇的结果,7.7-7=???
makingjc
2011-11-22 12:20:10
public class Test{
public static void main(String[] args){
double a=7.7,b=7,c;
c=a-b;
System.out.println(c);
}
}
结果等于0.7000000000000002,到底这个2是那来的?为什么得这结果?
我想做计算器,如果计算器算出这个结果就是不对的,但我又不想制这
计算器多少位小数,应该怎么处理?请各位大侠说详细点,谢谢
...全文
212
17
打赏
收藏
神奇的结果,7.7-7=???
public class Test{ public static void main(String[] args){ double a=7.7,b=7,c; c=a-b; System.out.println(c); } } 结果等于0.7000000000000002,到底这个2是那来的?为什么得这结果? 我想做计算器,如果计算器算出这个结果就是不对的,但我又不想制这 计算器多少位小数,应该怎么处理?请各位大侠说详细点,谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
绿领巾童鞋
2011-11-22
打赏
举报
回复
很正常
噢噢噢噢
2011-11-22
打赏
举报
回复
double 类型的 7.7 不等于 7.7
五哥
2011-11-22
打赏
举报
回复
double float操作 ,需要注意精度的问题
makingjc
2011-11-22
打赏
举报
回复
[Quote=引用 3 楼 ruanxichengguohuier 的回复:]
去看下java解惑这本书吧。
[/Quote]
谢谢,这本书不错,有空一定看
LucEaspe
2011-11-22
打赏
举报
回复
double 的精度长,用二进制来处理的,你自己用二进制算,你也会算出这样的结果。
yunye
2011-11-22
打赏
举报
回复
float 和 double 等浮点类型计算时经常有0.0000***1的偏差的,我通常是将double转换成BigDecimal进行计算,可以了解下BigDecimal
makingjc
2011-11-22
打赏
举报
回复
不截行吗?因为也不止这个数减这个数得这结果,我怎么知道其他结果要截到几位数?
ec_huyinghuan
2011-11-22
打赏
举报
回复
这个是计算机 二进制处理数字的原因,论坛上有过详细的帖子 你搜索一下
天空龙
2011-11-22
打赏
举报
回复
去看下java解惑这本书吧。
senlinzhiwang
2011-11-22
打赏
举报
回复
你可以把最后的几位截掉啊,这样就不出现这种情况了。
makingjc
2011-11-22
打赏
举报
回复
在线等,请教高手
makingjc
2011-11-22
打赏
举报
回复
[Quote=引用 12 楼 makingjc 的回复:]
引用 6 楼 yunye114105 的回复:
float 和 double 等浮点类型计算时经常有0.0000***1的偏差的,我通常是将double转换成BigDecimal进行计算,可以了解下BigDecimal
谢谢你,问题解决了,呵呵
也谢谢各位,让我知道了double 7.7并不等于7.7;
[/Quote]
用这个BigDecimal还是有误差,还是要用到DecimalFormat,不过更精确了,已经可以满足我的要求了。
Apeipo
2011-11-22
打赏
举报
回复
你试试看用二进制表示下 7.7 你就知道了.
fytq813
2011-11-22
打赏
举报
回复
计算机做的本来就是做浮点运算,得到的结果都是近似值
makingjc
2011-11-22
打赏
举报
回复
[Quote=引用 6 楼 yunye114105 的回复:]
float 和 double 等浮点类型计算时经常有0.0000***1的偏差的,我通常是将double转换成BigDecimal进行计算,可以了解下BigDecimal
[/Quote]
谢谢你,问题解决了,呵呵
也谢谢各位,让我知道了double 7.7并不等于7.7;
你必须知道的495个C语言问题
3.7 是否可以安全地认为,一旦&&和||左边的表达式已经决定了整个表达式的结果,则右边的表达式不会被求值? 3.8 为什么表达式printf("%d%d",f1(),f2());先调用了f2?我觉得逗号表达式应该确保从左到右的求值顺序...
用C语言编写如下程序:牛顿法求方程f(x)=x^3-x-1=0在x0=1.5附近的实根,精确到6位小数。
用C语言编写如下程序:牛顿法求方程f(x)=x^3-x-1=0在x0=1.5附近的实根,精确到6位小数。 #include #include float Function(float ... printf("最后的结果为%f\n",result); } 如若有可以改进的地方,欢迎各位大佬提出。
shell获取hive查询数据结果_在shell中判断hive查询记录数大小
用途: 根据查询到结果数量来判断,是否需要再执行下个脚本。1. 查询语句script.q脚本如下:select count(1) as count from test;2. shell脚本如下:这里注意hive语句需要包裹在``(左上角~按键)里面,然后可以把输出...
CentOS安装NVidia驱动提示kernel source path问题
结果这次就死活安装不上。怎么办?参考: https://quantum6.blog.csdn.net/article/details/106931358 有两点说明: 安装依赖库。 查看一下/usr/src/kernels,有一个目录,这个完整路径就是所谓的kernel ...
Mysql 通过 binlog日志 恢复数据(数据搞丢看过来)
bin 目录 发现mysqlbinlog.exe 可执行文件 执行命令 并且输入 mysql 密码 到此数据库已经恢复成功,我们还是为了方便使用navicat刷新查看 数据库及其表数据 均已经恢复好了 7.例子(数据库中表数据 误操作后恢复) ...
Java SE
62,614
社区成员
307,327
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章