float四舍五入保留两位小数注意的地方
最近在codewars做了一道非常简单的题目,但是它却花了我20来分钟,虽然最后解决了,但是中间发觉对于java的基础实在不行,回去要好好补一下
不说这么多,上题目:就是写一个方法,把英里每加仑换算成公里每升,保留两位数
一开始写的时候是没有问题,问题出现在保留两位数那里,我上一个测试代码
import java.util.regex.Pattern;
public class Test {
/*
* 判断是否为整数
*
* @param str 传入的字符串
*
* @return 是整数返回true,否则返回false
*/
public static boolean isInteger(String str) {
Pattern pattern = Pattern.compile("^[-\\+]?[\\d]*$");
return pattern.matcher(str).matches();
}
public static void main(String[] args) {
System.out.println(((Math.round(2.5555f * 100) / 100)));
System.out.println(isInteger(((Math.round(2.5555f * 100) / 100))+""));
System.out.println((float) ((Math.round(2.5555f * 100) / 100)));
System.out.println((float) ((Math.round(2.5555f * 100f) / 100f)));
System.out.println(((Math.round(2.5555f * 100) / 100.0)));
}
}
输出结果:
2
true
2.0
2.56
2.56
做题目的时候我是使用第二句
从结果那里可以看见,其实是错误,需要的语句应该是第三第四句
这里需要指出一个比较特殊的地方,在除100那个地方,如果只是写100,其实最后是把输出的结果已经在后台转为是整形,
因此,在最后处理除以100这里,必须在100之后加上f或者.0表示最后需要转化成float
最后的地方,我贴出那道题目的几个答案,里面包括了好几种float四舍五入保留两位小数的方法,大家可以参考一下
public class Converter {
public static float mpgToKPM(final float mpg) {
return Math.round(mpg * 1.609344f / 4.54609188f * 100f) / 100f;
}
}
import java.math.BigDecimal;
public class Converter {
public static float mpgToKPM(final float mpg) {
return BigDecimal.valueOf(mpg * 0.35400604353).setScale(2, BigDecimal.ROUND_HALF_UP).floatValue();
}
}
public class Converter {
private static final float LITER = 4.54609188f;
private static final float KILOMETER = 1.609344f;
public static float mpgToKPM(final float mpg) {
return Float.parseFloat(String.format("%.2f", mpg * KILOMETER / LITER ));
}
}
import java.math.BigDecimal;
public class Converter {
public static float mpgToKPM(final float mpg) {
double a = (mpg * 1.609344 / 4.54609188);
BigDecimal bi = new BigDecimal(String.valueOf(a));
return (float)bi.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
}
}
public class Converter {
public static float mpgToKPM(final float mpg) {
float result = (float) (mpg*1.609344/4.54609188);
String s = String.format("%.2f", result);
return Float.parseFloat(s);
}
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
分享到:
相关推荐
效果总结:清除缓存、datagrid列--float型数据四舍五入保留两位及改变背景色及其他等
主要介绍了Java四舍五入时保留指定小数位数的五种方式,帮助大家更好的理解和使用Java,感兴趣的朋友可以了解下
提供两个思路,一个是float转int这种。另外就是就是string转int的除法计算。 这只是两个简单的小例子。可以借鉴看看。
注:修约时看保留小数的后一位为5时进行修约,其他按四舍五入情况。 修约:五后皆零看奇偶,修约看5前面那一位数,五前为偶应舍去,五前为奇要进一。 例: 0.4451 保留两位 0.45 例: 0.445 保留两位 0.44 例: 0.435 ...
北京动力节点-Java编程零基础教程-059-Java基本语法-数据类型-float与double的区别.avi 北京动力节点-Java编程零基础教程-060-Java基本语法-数据类型-布尔型.avi 北京动力节点-Java编程零基础教程-061-Java基本...
android EditText单价(Int)与数量(Float)自动相乘 保留两位小数
相信大家在平时做项目时,可能会有这样的业务... 那么这篇文章小编就和大家分享了利用Java保留两位小数的几种写法,文章给出了详细的示例代码,对大家的学习和理解很有帮助,有需要的朋友们下面来一起学习学习下吧。
本篇文章主要介绍了js浮点数保留两位小数点示例代码(四舍五入) 需要的朋友可以过来参考下,希望对大家有所帮助
参考了一些网友的资料,自己动手写了四舍五入函数。代码如下: //num 是待四舍五入的数 //presion 是保留的小数位数 //问题:假定num = 3.1415926, presion=3,返回结果是3.14000 //返回结果是3.14000,即后面多余...
今 年 6月 7日 ,由 SUN公 司 和 台 湾 经 济 事 务 部 信 息 发 展 局, 台湾信 息 技 术 研究 所 等 单 位 牵 头 ,成 立 了 一 个 "Java联 盟 ", 参 加 的 有 22个 在 台 湾相 当 著 名 的 计 算 机公 司 ,并 在 台 ...
NULL 博文链接:https://thinktothings.iteye.com/blog/801301
进一法 保留一位小数封装好的组件可直接引用(从某处定位到当前位置的距离计算法则)进一法 保留一位小数封装好的组件可直接引用(从某处定位到当前位置的距离计算法则)进一法 保留一位小数封装好的组件可直接引用...
CSharp小数位数保留的方法大全文档,是我见过最实用的,从网上也搜集过很多,但尝试过后,好多都不能使用,但文档中的方法,不仅可以教你如何使用,而且有好多其他未见过的使用方法,请下载查看!
将值四舍五入到小数位数,避免了JavaScript的浮点怪异。 安装 npm install @alvarocastro/round 用法 const round = require ( '@alvarocastro/round' ) ; round ( 1.005 ) ; // => 1.01 round ( 2.2222 , 1 ) ; //...
Java实现IEE754 Float类型数据
本篇文章是对关于在数据库中保留小数位的问题进行了详细的分析介绍,需要的朋友参考下
大家可以看到我们用到了sprintf函数对$n进行了格式化%.2f是目标格式,其中2表示两位f表示float(浮点型) 第3为小数6被四舍五入 再看个例子 复制代码 代码如下: $n=0.1265489 echo substr(sprintf(“%.3”,$n),0,-1)...
本章节介绍一下如何实现对数字保留两位小数效果,如果数字的原本小数位数不到两位,那么缺少的就自动补零,这个也是为了统一的效果,先看代码实例: function returnFloat(value){ var value=Math.round...
把十进制实数转换成二进制增强版-float2bin.m 由于MATLAB中的dec2bin只能处理正整数,所以我写了一个新的转换函数float2bin 它可以处理正数、负数、整数、浮点数 我加了一个参数length,用来应对某些十进制小数...
CSS-float详解.pdf 开发文档