今天终于把浮点数的格式化,以及进位做了一个比较详细的了解。
比如计算出来一个结果是:34576543.3456。
现在客户需要的格式是各种各样的,假设是¥34,576,543.35
拆解如下:
- 这是个货币,需要前面加上货币符号
- 需要千分位
- 需要保留2位小数,必须考虑到进位问题
这个里面用到2个知识点,一个是浮点数的格式化,我们一般用DecimalFormat;
一个是四舍五入,我们用RoundingMode.HALF_UP
先将上面的代码贴在下面:
public void testDecimalFormat(){ double a=34576543.3456; DecimalFormat df=new DecimalFormat("###,##0.00"); df.setRoundingMode(RoundingMode.HALF_UP); System.out.println("¥"+df.format(a)); }
下面分别讲解:
1、DecimalFormat正如SimpleDateFormat一样,需要接受一个表示格式的参数,这里是###,##0.00
这个格式参数是由#和0两位符号,以及,和.组成。
那么#和0到底有什么相同点和区别呢?
相同:
- 2者都表示数字
区别:
- #如果放在两端,那么碰到0,则0丢失。比如00333.3300,用#号表示两端的话,则是333.333
- 当不足时,用#是显示不了的。比如333,要想显示成333.00,用#号是无效的,只能用00
2、关于进位
DecimalFormat的进位默认是RoundingMode.HALF_EVEN,这个是银行家算法(在大量的计算时,误差最小),即如果被舍弃掉的部分的左边是偶数,则同HALF_DOWN;如果被舍弃掉的部分的左边是奇数,则同HALF_UP。
HALF_UP:即是中国的四舍五入。
HALF_DOWN:如果与两个相邻数字相等,则向下舍入,就这点和HALF_UP不同,别的同HALF_UP。
那我们这里比较习惯用四舍五入,所以直接用HALF_UP即可。
ps:#表示的是取整,如果#.00则表示的是带2位小数。
refurl:http://rainbow702.iteye.com/blog/1337529
http://jerval.iteye.com/blog/874983
相关推荐
总之,通过Java编程,我们可以方便地实现十六进制到三进制的转换,这涉及到数字的进位制转换以及对Java基本类型的操作。理解和掌握这种转换对于理解计算机内部数据处理机制和进行编程实践都是至关重要的。
源代码可能使用不同的编程语言实现,如C、C++、Java或Python等,用于理解和处理BCD编码的数据。 BCD的工作原理是将每一位十进制数用四位二进制数来表示。例如,十进制数字123可以被编码为二进制的1001 0010 0011。...
而二进制是计算机科学的基础,它只有两个符号:0和1,每次进位都是按照2的倍数进行。 在Java中,我们可以使用`Integer.toBinaryString()`方法将一个十进制整数转换为二进制字符串。例如: ```java int decimal...
八进制(Octal)是一种逢8进1的进位制,主要由数字0到7组成;而十进制是我们日常生活中最常用的计数方式,基于0到9这十个数字。在计算机科学中,八进制常用于表示内存地址或者文件权限等。 在 Java 中,我们有几种...
而十六进制(Hexadecimal)是一种逢16进1的进位制,用0-9的数字和A-F(代表10-15)来表示。在计算机科学中,十六进制常用于简化二进制表示,因为一个十六进制数字可以表示4位二进制数。 在Java中,有多种方法可以将...
6. 大整数库:在实际开发中,程序员通常会使用已有的大整数库,如GMP(GNU Multiple Precision Arithmetic Library)、Java的BigInteger类或Python的内置decimal模块。这些库提供了丰富的功能,包括加法、减法、乘法...
no exact representable decimal result." 提示我们,当前的除法运算会导致无限循环的小数部分,Java无法为这样的结果找到一个精确的`BigDecimal`表示。为了解决这个问题,我们需要在调用`divide`方法时指定商的...
在计算机科学中,大数(Large ...在实际编程中,许多编程语言提供了内置的大数库,如Python的`decimal`和`fractions`模块,Java的`BigInteger`类,这些都是处理大数的好帮手,能够简化开发工作并提供高精度计算的能力。
此外,现代编程语言如Python提供了内置的高精度计算模块(如Python的`decimal`或`fractions`),可以简化此类计算的实现,提高代码的可读性和维护性。 高精度计算在很多领域都有应用,如金融计算、密码学、科学计算...
而十六进制是一种逢16进1的进位制,使用16个符号:0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F来表示数值,其中A到F分别代表10到15。 在大多数编程语言中,都有内置的函数或方法可以实现这种转换。例如,在...
在其他编程语言中,如Java、C++、JavaScript等,也有相应的转换函数,例如Java的`Integer.toHexString()`,C++的`std::stringstream`或`std::bitset`,JavaScript的`Number.toString(16)`。 总之,十进制到十六进制...
**十六进制(Hexadecimal)**:十六进制是一种逢16进1的进位制,使用0-9和A-F这16个符号来表示数值,其中A代表10,B代表11,C代表12,D代表13,E代表14,F代表15。 **十进制(Decimal)**:十进制是我们日常生活中...
在Python、Java、C++等许多编程语言中,都有内置的库支持大数字操作,如Python的`decimal`和`fractions`模块,Java的`BigInteger`类,C++的`<boost/multiprecision/cpp_int>`库。但如果你需要从头实现这样的功能,...
1. **大数表示**:对于大数,可以使用链表、数组、或者特定的大数库如Java的BigInteger、Python的decimal模块等。在这个案例中,由于是基于VS2005开发的,可能是使用自定义的数组结构,每个元素存储大数的一个位。 ...
在实际应用中,很多编程语言提供了内置的大数支持,如Python的`decimal`模块和Java的`BigInteger`类,它们封装了上述运算,方便开发者使用。然而,对于特定性能要求或特定进制的场景,手动实现大数运算算法可能是...
而在C++或Java中,可以使用GMP(GNU Multiple Precision Arithmetic Library)或Java的大整数类`BigInteger`来处理高精度计算。自定义实现则需要更多的编程技巧和理解。 六、应用领域 高精度计算在密码学(如RSA...
在IT领域,16进制(Hexadecimal)与10进制(Decimal)转换是常见的数值操作,尤其在编程和计算机科学中。本压缩包文件“支持任意大的16进制转10进程例程”提供了这样的转换例程,可能包含源代码、文档或示例,用于...
Python的`decimal`和`fractions`模块,Java的`BigInteger`类,C#的`System.Numerics.BigInteger`类都是大数处理的例子。 7. **安全性**:在密码学和安全领域,大数运算被广泛用于加密算法,如RSA公钥加密算法就是...
在IT行业中,大数运算是一种处理超过常规整型或浮点型变量所能表示范围的数值...在大型软件项目中,可能会使用专门的大数库,如Java中的BigInteger或Python中的decimal模块,它们提供了更完整、更高效的大数运算功能。