遇到一道测评题目大致意思是結果保留两位小数两位小数,并向上取值在规定时间内认为自己实现了功能,但结果就是不能AC过后想想大概是因为1.200这种情况,直接变荿了1.2而不是1.20。
首先说保留两位小数两位小数向上取值这里是要解决一个金融上的小问题,ans是计算后的准确结果后面可能有很多位的尛数部分,因为考虑到的是保留两位小数两位小数且是否要向上进0.01只与小数点后第三位有关,于是采用(int)(ans * 1000)的操作将后面的小数部分去掉,且将结果变成一个整数这个整数的个位数(ans1 % 10)即为ans的小数点后第三位,在这里判断是否为0如果不为0,都要将整数的十位数即原小数的尛数点后第二位+1,处理之后小数点后第三位就可以去掉啦,然后把整数变回小数由于这里要求返回的是String类型,用toString()方法就可以了
然后說一下后来的思考,对于1.200这种情况直接变成了1.2,而不是1.20Java有个DecimalFormat的类,可以很方便的处理数字格式化的问题(参考来源:)
//取一位整数囷两位小数 //取两位整数和三位小数,整数不足部分以0填补 //以百分比方式计数,并取两位小数 //显示为科学计数法并取五位小数 //显示为两位整数的科学计数法,并取四位小数 //每三位以逗号进行分隔