`
xyfwjk
  • 浏览: 7054 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

关于JAVA中对整数位为0的小数保留N位有效数

    博客分类:
  • JAVA
阅读更多
最近有个需求是对一个double值,保留3位小数,如果整数位为零,则小数点后保留3个有效值。
下面是实现代码,如果有更好的办法,请告诉我,谢谢!
	private static final int DEFAULT_SCALE = 3;//默认保留三位
	private static final int MAX_SCALE = 9;//最大保留9位
	private static final String INTEGER_BIT_NOT_ZERO = "(0([.](0+|[0-9]{1,3}))?)|(-?[1-9][0-9]*([.][0-9]+)?)";//不包括整数位为0,小数位超过三位的正则
	private static final String INTEGER_BIT_IS_ZERO = "0[.]0*[1-9][0-9]{0,2}";//获取需要保留小数位的精度的正则

private double formatNumber(double value)
	{
		BigDecimal bigDecimal = BigDecimal.valueOf(value);
		int scale = DEFAULT_SCALE;
		if (!bigDecimal.toString().matches(INTEGER_BIT_NOT_ZERO))
		{
			Matcher matcher = Pattern.compile(INTEGER_BIT_IS_ZERO).matcher(
					bigDecimal.toString());
			if (matcher.find())
			{
				scale = matcher.group().length() - 2;
			}
			else
			{
				scale = MAX_SCALE;//因为如果是科学计数的形式,这儿会匹配不成功,所以给个默认的精度
			}
		}
		return bigDecimal.setScale(scale, RoundingMode.HALF_UP).doubleValue();
	}
2
2
分享到:
评论

相关推荐

    详解Java判断是否是整数,小数或实数的正则表达式

    在Java中使用正则表达式来判断字符串是否符合整数、小数或实数的格式是一种常见且有效的做法。在编程中,我们经常需要对输入的字符串进行格式验证,以确保它们符合预期的数值格式,尤其是在处理财务数据、用户输入...

    JAVA案例 第二篇:针对大数值取整数和小数、保留几位小数、特定位数的数值、自幂数.docx

    在JAVA编程中,处理数值运算是一项...通过理解并灵活运用这些方法,我们可以有效地解决大数值的取整、取小数、保留小数位以及计算自幂数等问题。在实际编程中,应根据具体需求选择合适的方法,确保代码的效率和可读性。

    Java 数字转换成中文读法

    在这个代码示例中,`numToChinese`函数接收一个整数,然后通过计算每个数位上的数字并结合单位映射表生成中文读法。`simplify`函数用于删除不必要的“零”字符,以确保输出的中文读法简洁正确。`isZeroUnit`函数用来...

    java 随机生成整数

    通过理解代码中的随机数生成、避免重复数字以及条件输出机制,开发者可以更好地掌握Java中的随机数处理技巧,为实际应用提供有力支持。然而,也应注意,如上所述的避免重复数字的方法可能在大数据量下效率较低,未来...

    java 求任意一个正数的阶乘

    在Java中,我们可以使用循环或递归的方式来实现求解任意正整数的阶乘。本篇文章将详细探讨如何用Java来计算阶乘。 首先,我们需要理解阶乘的概念。阶乘是一个正整数n与小于它的所有正整数的乘积,表示为n!。例如,5...

    设有n个正整数,将他们连接成一排,组成一个最大的多位整数

    3. **排序并输出结果:** 使用Java中的排序算法(例如冒泡排序或使用`Arrays.sort`配合自定义比较器)对输入的整数数组进行排序,然后按顺序拼接所有数字形成最终结果。 #### 2. Java编程实现 **关键代码分析:** ...

    java-显示整数个位数

    在这个方法中,首先尝试将文本框中的字符串转换为整数,然后分别计算并显示百位、十位和个位上的数字。如果输入的不是有效的整数,则会捕获 `NumberFormatException` 异常,并通过对话框提示用户输入错误。 ##### 3...

    Java编程 翻译 编写程序,输入数字,使之转化为英语

    根据给定的信息,本文将详细解释一个Java程序的设计与...综上所述,该Java程序提供了一种简洁有效的方法来将数字字符串转换为英文表示。通过合理利用不同的方法来处理不同位数的数字,程序能够灵活地应对各种输入情况。

    求整数的位数及各位和.zip

    在Java编程语言中,求解一个整数的位数及各位数字之和是一个常见的问题,尤其是在数字处理和算法设计方面。这个任务可以通过多种方法来实现,包括基础的数学操作和字符串处理。以下将详细介绍如何完成这个任务。 ...

    java字符串类型数字设置千分位分隔

    在给定的场景中,我们需要处理三种类型的数字:整数、带有小数点的数字以及负数,并且需要确保输入是有效的数字字符串。 首先,我们需要了解`DecimalFormat`类。它是`java.text`包下的一个类,主要用于格式化十进制...

    计算整数各位数字之和,利用java代码实现

    为了计算一个整数各个位上的数字之和,我们需要采用一种策略,即不断地对这个整数进行除以10的操作,并取其余数,直到该整数变为0。具体步骤如下: 1. **初始化变量**:首先,我们设定一个变量`sum`用于存储各个位...

    Java实现n位数字的全排列

    在Java编程中,实现n位数字的全排列是一项常见的算法问题。全排列是指从n个不同元素中取出n个元素,按照一定顺序排列的所有可能的组合。每一种排列都是唯一的,且总数为n的阶乘(n!)。这个问题通常通过递归的方式来...

    利用JAVA,求数字特征值。

    然而,在这个上下文中,特征值可能是指更广泛的数学或编程概念,如数字的质因数分解、模运算性质、位操作、数字的统计特性(如平均值、中位数、众数)或其他自定义计算。 在Java中,我们可以通过多种方式求取数字...

    整数划分问题java源码

    整数划分问题的定义是:给定一个非负整数n,寻找所有可能的方式将其拆分为若干个正整数的和,这些正整数称为划分的“部分”。例如,当n=4时,有效的划分有{4}、{3,1}、{2,2}、{2,1,1}和{1,1,1,1}。 在Java中解决这...

    将数字转为中文金额的大写方式(Java版)

    这个过程通常涉及到对数字每一位的处理,包括个、十、百、千、万、亿等单位,以及零、壹、贰、叁、肆、伍、陆、柒、捌、玖等数字的对应。 例如,一个简单的转换函数可能会这样设计: ```java public String ...

    21位水仙花数JAVA代码

    水仙花数是一个n位正整数(n≥3),它的每个位上的数字的n次幂之和等于它本身。例如,153是一个3位的水仙花数,因为1^3 + 5^3 + 3^3 = 153。 对于21位的水仙花数而言,它需要满足以下条件:所有位上的数字的21次幂...

    java 位操作集合以及应用技巧

    Java中的位操作是一种底层的、高效的编程技巧,它允许我们直接对二进制位进行操作。位操作在处理数据、优化代码性能等方面有着广泛的应用,尤其是在处理二进制流、节省内存资源或进行高效计算时。本文将深入探讨Java...

    JAVA程序设计实用教程(第3版)习02.02 三位数的数字和.rar

    在《JAVA程序设计实用教程(第3版)》中,习题02.02主要关注的是计算三位数的数字和。这个练习旨在帮助学习者深入理解Java编程基础,特别是涉及整数处理、循环结构以及基本算法设计。下面将详细阐述相关知识点。 1....

    js完美解决jsp文本框限制只能输入数字、小数问题

    - `keyNumDown(obj, count1, count2)`:主要函数,用于限制用户输入特定格式的数字(整数部分最多`count1`位,小数部分最多`count2`位)。 3. **代码逻辑分析** - **获取光标位置**:`getPosition`函数根据...

    java生成十个不重复的随机数

    在Java编程中,生成十个不重复的随机数是一项常见的任务,尤其在进行数据模拟、测试或者游戏设计等场景。要实现这个功能,我们需要利用到Java的集合框架和Math类中的随机数生成方法。下面我们将详细讲解如何实现这个...

Global site tag (gtag.js) - Google Analytics