- 浏览: 2110512 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
无心流泪wan:
private static final Log log = ...
log4j Category.callAppenders Block -
yjxa901:
博主好: http://www.java.net/down ...
jdk debug -
aptech406328627:
大神,请接收我的膜拜吧,纠结了两天的问题,就这么让你给解决了 ...
java.lang.reflect.MalformedParameterizedTypeException -
xukunddp:
谢谢1楼,我也遇到,搞定了
java.lang.reflect.MalformedParameterizedTypeException -
di1984HIT:
学习了!!!!
jvmstat hsperfdata java.io.tmpdir
突然需要对double的数字做精确记录,go之发现网上给出了很好的答案,故摘录在此,谢谢网上的各处答疑。
出自如下2处 :
1: http://topic.csdn.net/t/20030318/12/1544852.html
2: http://bbs.chinaunix.net/viewthread.php?tid=723528
一:利用NumberFormat
import java.text.*; public class Test{ public static void main(String[]args){ float value=1.23456789f; NumberFormat numFormat = NumberFormat.getNumberInstance(); numFormat.setMaximumFractionDigits(2); String str = numFormat.format(value); System.out.println(str); } }
说明下,默认的是会做四舍五入了。例如1.236 取2位得到的是 1.24 ,如果取0 则默认是取整操作了,另外传递负数也是取整,因为max(0,value)
二:利用BigDecimal
import java.math.BigDecimal; String str = String.valueOf((new BigDecimal(1.234567)).setScale(2,BigDecimal.ROUND_HALF_UP));
BigDecimal提供了如下几种round modes
// Rounding Modes /** * Rounding mode to round away from zero. Always increments the * digit prior to a nonzero discarded fraction. Note that this rounding * mode never decreases the magnitude of the calculated value. */ public final static int ROUND_UP = 0; /** * Rounding mode to round towards zero. Never increments the digit * prior to a discarded fraction (i.e., truncates). Note that this * rounding mode never increases the magnitude of the calculated value. */ public final static int ROUND_DOWN = 1; /** * Rounding mode to round towards positive infinity. If the * {@code BigDecimal} is positive, behaves as for * {@code ROUND_UP}; if negative, behaves as for * {@code ROUND_DOWN}. Note that this rounding mode never * decreases the calculated value. */ public final static int ROUND_CEILING = 2; /** * Rounding mode to round towards negative infinity. If the * {@code BigDecimal} is positive, behave as for * {@code ROUND_DOWN}; if negative, behave as for * {@code ROUND_UP}. Note that this rounding mode never * increases the calculated value. */ public final static int ROUND_FLOOR = 3; /** * Rounding mode to round towards {@literal "nearest neighbor"} * unless both neighbors are equidistant, in which case round up. * Behaves as for {@code ROUND_UP} if the discarded fraction is * ≥ 0.5; otherwise, behaves as for {@code ROUND_DOWN}. Note * that this is the rounding mode that most of us were taught in * grade school. */ public final static int ROUND_HALF_UP = 4; /** * Rounding mode to round towards {@literal "nearest neighbor"} * unless both neighbors are equidistant, in which case round * down. Behaves as for {@code ROUND_UP} if the discarded * fraction is {@literal >} 0.5; otherwise, behaves as for * {@code ROUND_DOWN}. */ public final static int ROUND_HALF_DOWN = 5; /** * Rounding mode to round towards the {@literal "nearest neighbor"} * unless both neighbors are equidistant, in which case, round * towards the even neighbor. Behaves as for * {@code ROUND_HALF_UP} if the digit to the left of the * discarded fraction is odd; behaves as for * {@code ROUND_HALF_DOWN} if it's even. Note that this is the * rounding mode that minimizes cumulative error when applied * repeatedly over a sequence of calculations. */ public final static int ROUND_HALF_EVEN = 6; /** * Rounding mode to assert that the requested operation has an exact * result, hence no rounding is necessary. If this rounding mode is * specified on an operation that yields an inexact result, an * {@code ArithmeticException} is thrown. */ public final static int ROUND_UNNECESSARY = 7;
三 :利用DecimalFormat
通过使用java.text package包中提供的类型,将数字类型装换成指定的格式。 http://www.javaalmanac.com/egs/index.html // The 0 symbol shows a digit or 0 if no digit present NumberFormat formatter = new DecimalFormat("000000"); String s = formatter.format(-1234.567); // -001235 // notice that the number was rounded up // The # symbol shows a digit or nothing if no digit present formatter = new DecimalFormat("##"); s = formatter.format(-1234.567); // -1235 s = formatter.format(0); // 0 formatter = new DecimalFormat("##00"); s = formatter.format(0); // 00 // The . symbol indicates the decimal point formatter = new DecimalFormat(".00"); s = formatter.format(-.567); // -.57 formatter = new DecimalFormat("0.00"); s = formatter.format(-.567); // -0.57 formatter = new DecimalFormat("#.#"); s = formatter.format(-1234.567); // -1234.6 formatter = new DecimalFormat("#.######"); s = formatter.format(-1234.567); // -1234.567 formatter = new DecimalFormat(".######"); s = formatter.format(-1234.567); // -1234.567 formatter = new DecimalFormat("#.000000"); s = formatter.format(-1234.567); // -1234.567000 // The , symbol is used to group numbers formatter = new DecimalFormat("#,###,###"); s = formatter.format(-1234.567); // -1,235 s = formatter.format(-1234567.890); // -1,234,568 // The ; symbol is used to specify an alternate pattern for negative values formatter = new DecimalFormat("#;(#)"); s = formatter.format(-1234.567); // (1235) // The ' symbol is used to quote literal symbols formatter = new DecimalFormat("'#'#"); s = formatter.format(-1234.567); // -#1235 formatter = new DecimalFormat("'abc'#"); s = formatter.format(-1234.567); // -abc1235
再次对网上各位答仁表示感谢。
发表评论
-
groovy shell 安全
2017-01-18 11:29 1212groovy 可以动态执行代码,但是我们也想他在一定的沙箱中 ... -
eclipse 插件
2016-11-17 12:00 626eclipse remote editor https: ... -
java method signature
2013-08-12 21:07 2726case 'B': _type = T_BYT ... -
eclipse显示GC的按钮
2013-06-18 19:32 4345同事说idea的一个比较亮的功能是可以手动去GC,然后机器 ... -
好用的maven插件收集
2013-02-22 10:40 13521:Maven Shade Plugin(把所有jar打到一 ... -
查看JVM Flags
2013-01-09 14:22 1342-XX:+PrintFlagsFinal Jav ... -
开源的好用JVM问题排查工具
2013-01-08 09:45 1865TProfiler https://github.com/ ... -
java ocr
2013-01-04 13:06 3038java OCR相关的资料记录 Clara OC ... -
eclipse ast
2012-12-23 22:36 1021Eclipse JDT - Abstract Syntax ... -
正则生成器
2012-12-23 22:24 981能够依据普通文本给出可能的正则组合 http://ww ... -
Kilim
2012-12-14 23:40 1113Java 开发 2.0: Kilim 简介 h ... -
IO Design Patterns Reactor VS Proactor
2012-11-13 01:34 15141:两种高性能I/O设计模式(Reactor/Proactor ... -
antlr
2012-11-13 00:36 12271:使用 Antlr 开发领域语言 http://www.i ... -
java singalException
2012-11-12 21:39 985之前看到毕大师一封关于异常多造成的cpu us很高的分析邮件, ... -
log4j Category.callAppenders Block
2012-11-06 17:01 10163经常在高并发下就遇到log4j用错引起的线程block住的问题 ... -
Troubleshooting JDK
2012-10-26 14:13 1537收集整理下JDK自带的关于 Troubleshooting 的 ... -
JavaOne 2011 Content Catalog
2012-10-14 17:12 1174上一篇讲javaone 2012,这次找了下2011的资料。 ... -
JavaOne 2012 Content Catalog
2012-10-13 16:07 1315转载自:http://marxsoftware.blogspo ... -
Memory usage of Java
2012-10-01 17:30 1222用JDK自带的api计算size,每次都会有个多余的12,看了 ... -
GC roots
2012-10-01 17:07 18561:GC roots http://www.yourkit. ...
相关推荐
java数学计算工具类 double精确的加法算法 double精确的减法算法 精确的乘法算法 对精确的除法运算,当发生除不尽的 保留小数、数值精度
Double类型精确计算,加法,减肥,乘除
本文将围绕“C# Double保留小数点后面位数”这一主题展开详细讨论,包括如何利用`Double`类型的数据以及如何通过字符串格式化来实现这一功能。 ### C#中的Double类型 在C#中,`Double`是一种基本数据类型,用于...
虽然 `double` 提供了相对较高的精度,但在涉及精确数学运算(特别是涉及到小数值)时,由于其内部采用二进制浮点数格式存储,仍会出现精度丢失的情况。这种精度丢失的现象对于需要高精度计算的应用来说是一个常见的...
本文将详细介绍如何在Java中使用`BigDecimal`类来实现`double`类型数值保留指定小数位数的方法。 #### 二、基础知识 1. **BigDecimal类简介**: - `BigDecimal`是Java中用来处理任意精度的十进制数的一个类。 - ...
描述中提到,“可自己确定精确位数”,这意味着这个类包可能允许用户自定义数值的精度,比如需要多少位小数,或者能处理多大的数值范围。这样的灵活性使得用户可以根据实际需求调整计算精度,避免因过度精确而导致的...
`NumberFormatInfo` 类提供了一种自定义数字格式的方法,可以精确控制小数点后的位数。以下是一个具体的示例: ```csharp System.Globalization.NumberFormatInfo provider = new System.Globalization....
精确计算Double型数据,可用于货币计算
标题中的"Java 精确计算 - double-float-String"指向的是Java中处理浮点数(double和float)以及字符串表示的数值时可能遇到的精度问题,以及如何通过特定方法实现精确计算。描述中提到的链接指向了一个具体的博客...
5. **利用String的`floatValue`和`doubleValue`**:虽然`floatValue`和`doubleValue`在计算时可能出现不精确,但在将字符串转换为浮点数时,它们可以提供精确的转换。例如,从用户输入或者配置文件中读取浮点数时,...
2. **保留特定小数位**: 如果知道需要保留的小数位数,可以先将`double`乘以相应的10的幂,然后进行整数转换,再除回相同幂的10,但这只能解决特定场景下的问题。 3. **使用高精度库**: 如果需要处理大量的浮点计算...
在Java编程语言中,BigDecimal是一种用于处理高精度数值的数据类型,尤其适用于金融计算等领域,因为它可以提供不受限的小数位数精度以及精确的数学运算能力。然而,在某些情况下,我们可能需要将BigDecimal类型的值...
在计算机编程领域,尤其是涉及到数值运算时,经常会遇到由于浮点数表示不精确而导致的计算误差问题。本篇文章将深入探讨在C#、SQL Server以及Oracle数据库中使用`double`类型进行计算时可能出现的误差,并通过具体的...
`BigDecimal`类提供了精确的浮点数运算能力,非常适合用于需要高精度的场景。通过调用`setScale`方法可以方便地设置小数位数,并指定四舍五入的方式。 ```java double f = 111231.5585; BigDecimal b = new ...
Java 中的浮点数类型 float 和 double 在进行运算时会出现不精确的问题,这是因为计算机无法精确地表示十进制小数。这种问题不仅存在于 Java 中,在其它许多编程语言中也存在。 问题的提出: 编译运行下面的 Java ...
例如,使用`%.8lf`格式化`float`可能无法避免精度丢失,而在适当情况下,对`double`使用`%.20lf`可以保留更多位数,减少精度损失。 3. **浮点数比较**: 直接使用`==`操作符比较两个`double`类型的浮点数是否相等...
### C++ 中 string 转换为 double 的方法 在 C++ 编程语言中,字符串(`std::string`)与数值类型(如 `int`、`double`)之间的转换是常见的需求之一。这种转换通常用于处理用户输入的数据、解析配置文件或处理网络...
本文将详细讨论如何在C++中将`double`类型的数值转换为`std::string`字符串,以及如何将`std::string`转换回`double`。我们将基于提供的`stringtodouble`工程文件进行讨论。 首先,让我们探讨`double`转`string`的...
然而,在处理数值计算时,通常需要将`cell`类型的数据转换为`double`类型,以便进行精确的数学运算。本文将详细讨论如何在MATLAB中进行这种类型转换,并提供相关的函数和技巧。 1. **什么是Cell类型?** `cell`是...
通过定义特定的模式(pattern),可以精确控制数字的格式,包括小数点后的位数、前导零的存在与否等。 ##### 示例代码: ```java import java.text.DecimalFormat; public class DoubleFormatExample { public ...