保留两位小数,并向上取值

 

  遇到一道测评题目,大致意思是结果保留两位小数,并向上取值。在规定时间内认为自己实现了功能,但结果就是不能AC。过后想想大概是因为1.200这种情况,直接变成了1.2,而不是1.20。

 

  首先说保留两位小数向上取值。这里是要解决一个金融上的小问题,ans是计算后的准确结果,后面可能有很多位的小数部分,因为考虑到的是保留两位小数,且是否要向上进0.01只与小数点后第三位有关,于是,采用(int)(ans * 1000)的操作将后面的小数部分去掉,且将结果变成一个整数,这个整数的个位数(ans1 % 10)即为ans的小数点后第三位,在这里判断是否为0,如果不为0,都要将整数的十位数,即原小数的小数点后第二位+1,处理之后,小数点后第三位就可以去掉啦,然后把整数变回小数,由于这里要求返回的是String类型,用toString()方法就可以了。

 

  static String calculate(int a, double i, int n) {
    	double ans = a * (i /1200) * Math.pow((1+i /1200),(n * 12)) / (Math.pow((1+i /1200),(n * 12))-1);
    	int ans1 = (int)(ans*1000);
    	if(ans1 % 10 != 0) 
    		ans1 = ans1 + 10;
    	ans1 = ans1 - ans1 % 10;
    	double res = ans1/1000.0;
    	String result = Double.toStrin
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值