import java.math.BigDecimal;
import java.text.DecimalFormat;
/**
* 获取指定位数的小数工具类<br>
*
* @author mxy(Email:987938582@qq.com)
*
*/
public class NumberFormat {
/**
* BigDecimal转换最简便,采用四舍五入方式
*
* @param num 要转换的数字
* @param length 保留几位小数
*/
public double formatByBigDecimal(double num, int length) {
BigDecimal bg = new BigDecimal(num);
double f1 = bg.setScale(length, BigDecimal.ROUND_HALF_UP).doubleValue();
// System.out.println("转换后的结果:"+f1);
return f1;
}
/**
* DecimalFormat转换最简便,采用四舍五入方式
*
* @param num 要转换的数字
* @param length 保留几位小数
*/
public double formatByDecimalFormat(double num, int length) {
String foramtStr = "#";
if (length > 0) {
foramtStr += ".";
for (int i = 0; i < length; i++) {
foramtStr += "0";
}
}
DecimalFormat df = new DecimalFormat(foramtStr);
// System.out.println("转换后的结果:"+df.format(num));
return Double.valueOf(df.format(num));
}
/**
* String.format方式格式化,采用四舍五入方式
*
* @param num 要转换的数字
* @param length 保留几位小数
*/
public double formatByStringFormat(double num, int length) {
double f = 111231.5585;
String formatStr = "";
if (length > 0) {
formatStr = "%." + length + "f";
} else {
formatStr = "%.0f";
}
// System.out.println("转换后的结果:"+String.format(formatStr, num));
return Double.valueOf(String.format(formatStr, num));
}
public static void main(String[] args) {
NumberFormat f = new NumberFormat();
double num = 111231.558512311234812932134923;
/* 10位小数 */
System.out.println(f.formatByBigDecimal(num, 10));
System.out.println(f.formatByDecimalFormat(num, 10));
System.out.println(f.formatByStringFormat(num, 10));
/* 10位小数 */
System.out.println();
/* 5位小数 */
System.out.println(f.formatByBigDecimal(num, 5));
System.out.println(f.formatByDecimalFormat(num, 5));
System.out.println(f.formatByStringFormat(num, 5));
/* 5位小数 */
System.out.println();
/* 一位小数 */
System.out.println(f.formatByBigDecimal(num, 1));
System.out.println(f.formatByDecimalFormat(num, 1));
System.out.println(f.formatByStringFormat(num, 1));
/* 一位小数 */
System.out.println();
/* 0位小数 */
System.out.println(f.formatByBigDecimal(num, 0));
System.out.println(f.formatByDecimalFormat(num, 0));
System.out.println(f.formatByStringFormat(num, 0));
/* 0位小数 */
System.out.println();
/*-1位小数*/
System.out.println(f.formatByBigDecimal(num, -1));
System.out.println(f.formatByDecimalFormat(num, -1));
System.out.println(f.formatByStringFormat(num, -1));
/*-1位小数*/
}
}
运行结果:
111231.5585123112
111231.5585123112
111231.5585123112
111231.55851
111231.55851
111231.55851
111231.6
111231.6
111231.6
111232.0
111232.0
111232.0
111230.0
111232.0
111232.0
分享到:
相关推荐
根据描述,我们可以深入探讨注释的几种类型及其具体用途。 1. **单行注释(Line Comment)** 使用`//`表示,编译器遇到它会忽略该符号之后的所有文本。这种注释方式简洁明了,适用于对单一语句或简短内容的注解。...
6、输出所有的水仙花数,把谓水仙花数是指一个数3位数,其各各位数字立方和等于其本身, 例如: 153 = 1*1*1 + 3*3*3 + 5*5*5 class DafodilNumber{ public static void main(String[] args){ System.out....
保留两位小数的坐标可以提供相当高的精度,一般可以精确到几十米级别。然而,由于地球表面的曲率,越靠近极地,同样的角度间隔在地表上的距离差异会越大。因此,这种精度在大部分应用中已经足够,但对于需要极高...
这里的正确答案D表示上述三种说法都不对,实际上,数据独立性是指数据与存储方式的分离。 3. JavaScript 打开窗口:在JavaScript中,使用`window.open()`方法可以打开新的窗口或标签页。正确答案是B,`window.open...
**表达式**:`0.01*int(100*(x+0.005))` 可用于将浮点数x保留两位小数,并进行四舍五入处理。 ### 18. MySQL中的NULL值 **表示未知或缺失**:在MySQL中,NULL表示未知或缺失的值。 ### 19. 常量的类型说明符 **...
对于计算结果,可能需要格式化显示,比如保留小数位数,处理溢出等问题。 6. **错误处理** 应考虑各种可能的错误情况,如除数为零、输入非法字符等,并提供友好的错误提示。可以使用Toast或AlertDialog来通知用户...
- **解释**: URL是一种标准的资源定位协议,用于标识Web上信息资源的具体位置,方便用户访问和获取。 ### 19. Session属性的检索 - **知识点**: 用于检索session属性userid的值的方法为`session.getAttribute(...
Android 一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导开发 IOS 由苹果公司开发的移动操作系统 Webkit 一个开源的浏览器引擎,在手机上的...
IvorHorton还著有关于C、C++和Java的多部入门级好书,如《C语言入门经典(第4版)》和《C++入门经典(第3版)》。 译者 杨浩,知名译者,大学讲师,从事机械和计算机方面的教学和研究多年,发表论文数篇,参编和翻译的...