------------------------------------------------- 有一篇: (1)、浮点数精确计算 胜利油田三流合一项目中一直存在一个问题,就是每次报表统计的物资金额和实际的金额要差那么几分钱...当然可以,习惯上我们本能就会这样考虑,但四舍五入意味着误差,商业运算中可能意味着错误,同时Java中也没有提供保留指定位数的四舍五入方法,只提供了一个Math.round(double d)和Math.round...,因为.025距离”nearest neighbor”(.02和.03)长度是相等,向下舍入就是.02,如果是4.0251那么保留两位小数就是4.03。...这里我们提供了一个工具类,定义浮点数的加、减、乘、除和四舍五入等运算方法。以供参考。...,舍入模式采用ROUND_HALF_EVEN * @param v 需要四舍五入的数字 * @param scale 小数点后保留几位 * @return 四舍五入后的结果 */
一般情况下,对于那些不需要准确计算精度的数字,我们可以直接使用Float和Double处理,但是Double.valueOf(String) 和Float.valueOf(String)会丢失精度。...return b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP).toString(); } /** * 提供精确的小数位四舍五入处理...* * @param v 需要四舍五入的数字 * @param scale 小数点后保留几位 * @return 四舍五入后的结果 */...return b.setScale(scale, BigDecimal.ROUND_HALF_UP).doubleValue(); } /** * 提供精确的小数位四舍五入处理...* * @param v 需要四舍五入的数字 * @param scale 小数点后保留几位 * @return 四舍五入后的结果 */
浏览器对百分比小数位的处理主要是保留2位、4位、13位或15位,为了测试是通过四舍五入还是截断处理,第一个百分比的值在第3位、5位、14位小数位取小于5的值,而第二个则取大于5的值。...浏览器 宽度的百分比保留的小数位 渲染后的宽度值保留的小数位 IE8 截断成 2 位 四舍五入成整数 IE9 截断成 2 位 四舍五入成整数 IE10 截断成 2 位 13 IE Edge 截断成 2 ... 4 位 6 QQ浏览器 7.0(Android 4.2.2) 四舍五入成 13 位 6 从测试数据可以看出: “宽度的百分比保留的小数位”方面,所有浏览器都支持小数位的百分比宽度值,其中最短为2位小数位...在第二组实验中(如下面的图1),我们虽然设置了三个各自相差0.1px的元素,但在亚像素渲染中有所偏差,box2-1与box2-2相差0.109375px,而box2-3与box2-2相差0.09375px...IE8、IE9对小于1像素的部分是会进行取整处理的,因此舍弃前后的整数值是621和620,那将会出现1像素的误差。
import java.math.BigDecimal; /** * 由于Java的简单类型不能够精确的对浮点数进行运算,这个工具类提供精 * 确的浮点数运算,包括加减乘除和四舍五入。...* @param v1 被减数 * @param v2 减数 * @return 两个参数的差 */ public static double sub(double v1,double v2){...10位,以后的数字四舍五入。...v2)); return b1.divide(b2,scale,BigDecimal.ROUND_HALF_UP).doubleValue(); } /** * 提供精确的小数位四舍五入处理...* @param v 需要四舍五入的数字 * @param scale 小数点后保留几位 * @return 四舍五入后的结果 */ public static double round(double
double和float差,在处理庞大,复杂的运算时尤为明显。...return b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP).toString(); } /** * 提供精确的小数位四舍五入处理...* * @param v 需要四舍五入的数字 * @param scale 小数点后保留几位 * @return 四舍五入后的结果 */...return b.setScale(scale, BigDecimal.ROUND_HALF_UP).doubleValue(); } /** * 提供精确的小数位四舍五入处理...* * @param v 需要四舍五入的数字 * @param scale 小数点后保留几位 * @return 四舍五入后的结果 */
和float差,在处理庞大,复杂的运算时尤为明显。...return b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP).toString(); } /** * 提供精确的小数位四舍五入处理...* * @param v 需要四舍五入的数字 * @param scale 小数点后保留几位 * @return 四舍五入后的结果...return b.setScale(scale, BigDecimal.ROUND_HALF_UP).doubleValue(); } /** * 提供精确的小数位四舍五入处理...* * @param v 需要四舍五入的数字 * @param scale 小数点后保留几位 * @return 四舍五入后的结果
* * @param v1 * 被加数 * @param v2 * 加数 * @return 两个参数的和 */ public static...* * @param v1 * 被减数 * @param v2 * 减数 * @return 两个参数的差 */ public static...10位,以后的数字四舍五入。 ...Double.toString(v2)); return b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP).doubleValue(); } /** * 提供精确的小数位四舍五入处理...* * @param v * 需要四舍五入的数字 * @param scale * 小数点后保留几位 * @return 四舍五入后的结果
的性能比double和float差,在处理庞大,复杂的运算时尤为明显。...return b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP).toString(); } /** * 提供精确的小数位四舍五入处理...* * @param v 需要四舍五入的数字 * @param scale 小数点后保留几位 * @return 四舍五入后的结果 */...return b.setScale(scale, BigDecimal.ROUND_HALF_UP).doubleValue(); } /** * 提供精确的小数位四舍五入处理...* * @param v 需要四舍五入的数字 * @param scale 小数点后保留几位 * @return 四舍五入后的结果 */
double和float差,在处理庞大,复杂的运算时尤为明显。... return b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP).toString(); } /** * 提供精确的小数位四舍五入处理... * * @param v 需要四舍五入的数字 * @param scale 小数点后保留几位 * @return 四舍五入后的结果 */ ... return b.setScale(scale, BigDecimal.ROUND_HALF_UP).doubleValue(); } /** * 提供精确的小数位四舍五入处理... * * @param v 需要四舍五入的数字 * @param scale 小数点后保留几位 * @return 四舍五入后的结果 */
* * @param v1 被加数 * @param v2 加数 * @return 两个参数的和 * @author liushouyun */...* * @param v1 被减数 * @param v2 减数 * @return 两个参数的差 * @author liushouyun */...10位,以后的数字四舍五入。...return b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP).doubleValue(); } /** * 提供精确的小数位四舍五入处理...* * @param v 需要四舍五入的数字 * @param scale 小数点后保留几位 * @return 四舍五入后的结果 * @author liushouyun
它提供以下静态方法,包括加减乘除和四舍五入: public static double add(double v1,double v2)public static double sub(double v1...其实就是将繁琐的过程进行封装,便于直接调用: import java.math.BigDecimal;/** * 由于Java的简单类型不能够精确的对浮点数进行运算,这个工具类提供精 * 确的浮点数运算,包括加减乘除和四舍五入...* @param v1 被减数 * @param v2 减数 * @return 两个参数的差 */ public static double sub(double...return b1.divide(b2,scale,BigDecimal.ROUND_HALF_UP).doubleValue(); } /** * 提供精确的小数位四舍五入处理...* @param v 需要四舍五入的数字 * @param scale 小数点后保留几位 * @return 四舍五入后的结果 */ public static double
b,输出这两个正整数的和,差,积,商,模(若 a > b 则输出 a - b,a / b,a % b 的值反之输出 b-a,b/a,b%a 的值,不考虑小数,请使用 int 类型) 输入描述 两个正整数...输出描述 它们的和,差,积,商,模。...描述 定义一个 int 类型变量 i, i 为由浮点数变量 d 四舍五入后的整数类型,请将转换后的i进行输出 输入描述 用户随机输入的浮点数 输出描述 四舍五入之后的整数(小数点后一位 >=5 则进一...b 变量的值 输出描述 交换后 a 变量和 b 变量的值,中间用空格隔开 示例 1 输入: 1 2 输出: 2 1 解答 先将 a、b 之和赋给 a,接着将 a 和 b 的差赋值给 b,此时 b = a...+ b - b = a,此时就交换了 a、b 的值,然后再将 a、b 的差赋值给 a,此时 a = a + b - a,此时就将 b 的值赋给了 a。
java保留两位小数问题: 一: 四舍五入(四舍五入形式保留两位小数,注意模式ROUND_HALF_UP) double f = 2345.2345; BigDecimal b = new BigDecimal...#.0000四位小数 以此类推… 三: double d = 2.1234567; String result = String .format(“%.2f”); %.2f %....表示 小数点前任意位数 2 表示两位小数 格式后的结果为f 表示浮点型 四: NumberFormat ddf1=NumberFormat.getNumberInstance() ; void setMaximumFractionDigits...BigDecimal(“5”); BigDecimal bignum3 = null; //加法 bignum3 = bignum1.add(bignum2); System.out.println(“和...是:” + bignum3); //减法 bignum3 = bignum1.subtract(bignum2); System.out.println(“差 是:” + bignum3); //乘法
关于浮点数存储精度丢失的问题,话题过于庞大,感兴趣的同学可以自行搜索一下:【解惑】剖析float型的内存存储和精度丢失问题 这里简单讨论一下十进制数转二进制为什么会出现精度丢失的现象,十进制数分为整数部分和小数部分...return b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP).toString(); } /** * 提供精确的小数位四舍五入处理...* * @param v 需要四舍五入的数字 * @param scale 小数点后保留几位 * @return 四舍五入后的结果 */...return b.setScale(scale, BigDecimal.ROUND_HALF_UP).doubleValue(); } /** * 提供精确的小数位四舍五入处理...* * @param v 需要四舍五入的数字 * @param scale 小数点后保留几位 * @return 四舍五入后的结果 */
Java代码 import java.math.BigDecimal; /** * 由于Java的简单类型不能够精确的对浮点数进行运算,这个工具类提供精 * 确的浮点数运算,包括加减乘除和四舍五入...* @param v1 被减数 * @param v2 减数 * @return 两个参数的差 */ public static double sub(double v1,double v2...10位,以后的数字四舍五入。...Double.toString(v2)); return b1.divide(b2,scale,BigDecimal.ROUND_HALF_UP).doubleValue(); } /** * 提供精确的小数位四舍五入处理...* @param v 需要四舍五入的数字 * @param scale 小数点后保留几位 * @return 四舍五入后的结果 */ public static double round(
* * @param v1 被加数 * @param v2 加数 * @return 两个参数的和 */ public static double add...* * @param v1 被减数 * @param v2 减数 * @return 两个参数的差 */ public static double sub...10位,以后的数字四舍五入。...return b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP).doubleValue(); } /** * 提供精确的小数位四舍五入处理...* * @param v 需要四舍五入的数字 * @param scale 小数点后保留几位 * @return 四舍五入后的结果 */ public
Oracle number类型的语法和用法 摘要:先根据精度值,对number类型的数据从左边第一个非零数字开始数精度值个位数,之后的位数截断不要(要四舍五入吗),再根据小数位置值,对number类型的数据右边的低位进行四舍五入...小数位置(scale) 当s(scale)为正数时,Oracle就对小数点右边的s个数字进行舍入。精确到小数点右边s位,并四舍五入。...数值类型详解–NUMBER、BINARY_FLOAT、BINARY_DOUBLE、BINARY_INTEGER、FLOAT Oracle的数据类型转换 to_char(date) Oracle 时间差计算...NUMBER(4,5) 0.09999 0.099996 NUMBER(4,5) ====================== Oracle中NUMBER类型如果不指定长度和小数点精度默认是多长...定点数的精度(p)和刻度(s)遵循以下规则: 当一个数的整数部分的长度 > p-s 时,Oracle就会报错 当一个数的小数部分的长度 > s 时,Oracle就会舍入。
领取 专属20元代金券
Get大咖技术交流圈