float小数点问题

ldpyes 2009-11-05 09:38:14
在用java语言计算中,是float类型的,但是很多数据都是小数点后面5、6位,现在想设定保存小数点后面一位或者两位,如何设定? 如
float f1= (float) 1.123324;
float f2 = (float) 97.35434;
float f3 = f1+f2;
要得到f3这有两为的小数,并且要四舍五入。这么样做
...全文
164 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
若鱼1919 2009-11-07
  • 打赏
  • 举报
回复

给你一个我自己写的函数
public static double save45As(double value,int num){//四舍五入,考虑了负数的情况
//第一个参数是要保留的浮点值,第二个是保留多少位
boolean minus=false;
if(value<0){value=-value;minus=true;}
String zeroStr="";
for(int i=0;i<num;i++){
zeroStr+="0";
}
zeroStr="1"+zeroStr;
double temp=new Double(zeroStr).doubleValue();
return minus?-1*(double)(Math.round(value*temp)/temp):(double)(Math.round(value*temp)/temp);
}
ldpyes 2009-11-07
  • 打赏
  • 举报
回复
谢谢大家来会贴,那个得到的f3就不是浮点型了,f3以后就没有办法在进行计算了。
不善^ 2009-11-06
  • 打赏
  • 举报
回复
或者这样

BigDecimal f2 = new BigDecimal(97.35434);
BigDecimal f3 = f1.add(f2);
f3 = f3.setScale(2,BigDecimal.ROUND_HALF_DOWN);
System.out.println(f3)

不善^ 2009-11-06
  • 打赏
  • 举报
回复
float f1= (float) 1.123324;
float f2 = (float) 97.35434;
float f3 = f1+f2;
DecimalFormat df = new DecimalFormat("#.00");
System.out.println(df.format(f3));
nicholas8709 2009-11-06
  • 打赏
  • 举报
回复
很好的回答!!![Quote=引用 3 楼 java_cxrs 的回复:]
float f1=  (float) 1.123324;
  float f2 = (float) 97.35434;
  float f3 = f1+f2;
  DecimalFormat df = new DecimalFormat("#.00");
  System.out.println(df.format(f3));
[/Quote]
qjcslgnhwayagain 2009-11-05
  • 打赏
  • 举报
回复
ls并没有实现四舍五入的功能啊
若鱼1919 2009-11-05
  • 打赏
  • 举报
回复
System.out.printf("%.2f",1.234567);

50,539

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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