显示数字小数结果不正确,方法无错误

com1021 2006-12-06 02:12:13
public class A
{
public static void main(String[] args)
{
double num= 256.879;
System.out.println("the result is: "+ fracPart(num));
}
public static double fracPart(double x)
{
return x- whole(x);
}
public static int whole(double y)
{
return (int)y ;
}
}

电脑结果显示不是0.879 而是0.87900000000000191
将数字换成256.967 不是显示0.967 而是 0.96699999999999845
这是为什么?
...全文
92 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
skyfulxx 2006-12-06
  • 打赏
  • 举报
回复
格式化输出就可以了,浮点数都有这个问题
fool_leave 2006-12-06
  • 打赏
  • 举报
回复
浮点问题任何语言都有
buyaowen 2006-12-06
  • 打赏
  • 举报
回复
浮点数精度问题,我原来也不知道,后来在c#碰到了,才发现java也有
fool_leave 2006-12-06
  • 打赏
  • 举报
回复
对,浮点型数据都存在精度问题
实际上数字一样,只不过显示的问题,所以最好格式化输出
com1021 2006-12-06
  • 打赏
  • 举报
回复
能否不用格式化来解决而采用其他方法,另外把 double 换成 float 也会出现这种问题,也是float的精度问题吗?
kobe082005 2006-12-06
  • 打赏
  • 举报
回复
这是double类型的原因,你可以用printf方法来格式化显示
fool_leave 2006-12-06
  • 打赏
  • 举报
回复
用SimpleDataFormat format=new SimpleDateFormat("#.####");来格式化输出

这个是double精度问题

62,629

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧