来自

例子:保留3位有效数字

1,239,451 ===》 1,240,000

12.1257 ===》12.1

.0681 ===》.0681

5 ===》5

代码实现

public static double roundToSignificantFigures(double num, int n) {

if(num == 0) {

return 0;

}

final double d = Math.ceil(Math.log10(num < 0 ? -num: num));

final int power = n - (int) d;

final double magnitude = Math.pow(10, power);

final long shifted = Math.round(num*magnitude);

return shifted/magnitude;

}

原理分析

1. 基本数学知识

Math.ceil()用作向上取整。

math.ceil(8)=8

math.ceil(8.5) =9

math.ceil(-8) =-8

math.ceil(-8.5))= -8

Math.floor()用作向下取整。

Math.floor(0.60) = 0

Math.floor(0.40) = 0

Math.floor(5) = 5

Math.floor(5.1) = 5

Math.floor(-5.1) = -6

Math.floor(-5.9) = -6

Math.round() 我们数学中常用到的四舍五入取整。

math.round(-8.9) =-9

math.round(-8.1) =-8

math.round(8.9) =9

math.round(8.1) =8

Math.pow(底数,几次方)

double a=2.0;

double b=3.0;

double c=Math.pow(a,b);

就是2的三次方是多少;

c最终为8;

Math.log10(double a) 返回以10为底的double的值。

特殊情况:

如果参数是NaN或小于零,那么结果是NaN.

如果参数是正无穷大,那么结果为正无穷大.

如果参数是正零或负零,那么结果是负无穷大.

如果参数是等于10N整数n,那么结果是n.

对数

如果a的x次方等于N(a>0,且a不等于1),那么数X叫做以a为底N的对数(logarithm),记作x=logaN

。其中,a叫做对数的底数,N叫做真数,x叫做“以a为底N的对数”

2. 小技巧

对一个数,求其以10为底的对数,可以很方便的知道他的位数。

如:

Math.log10(60984.1)=4.78521661890635

60984.1的位数 5

原理

Math.round() 可以帮助我们四舍五入。注意它针对第一个小数点。

我们可以将12300变成1.23,这样就可以四舍五入了。然后还原位数10000.

java保留4位有效数字_Java:保留几位有效数字相关推荐

  1. 用java编写保留两位小数_Java保留两位小数的几种写法总结

    摘要:这篇Java开发技术栏目下的"Java保留两位小数的几种写法总结",介绍的技术点是"Java保留两位小数.保留两位小数.两位小数.Java.小数.总结", ...

  2. java里相乘取两位小数_Java保留两位小数的几种做法

    在平时写程序的时,可以需要在界面或者页面上展示保留小数点后两位的数据.为了达到这样的展示效果,本文列举了几个方法: 使用java.math.BigDecimal 使用java.text.Decimal ...

  3. java实现次方的运算_Java中对于位运算的优化以及运用与思考

    引言 随着JDK的发展以及JIT的不断优化,我们很多时候都可以写读起来易读但是看上去性能不高的代码了,编译器会帮我们优化代码.之前大学里面学单片机的时候,由于内存以及处理器性能都极其有限(可能很多时候 ...

  4. java取余位运算_Java中对于位运算的优化以及运用与思考

    引言 随着JDK的发展以及JIT的不断优化,我们很多时候都可以写读起来易读但是看上去性能不高的代码了,编译器会帮我们优化代码.之前大学里面学单片机的时候,由于内存以及处理器性能都极其有限(可能很多时候 ...

  5. java int 保留两位小数_java保留两位小数

    java保留两位小数问题: 方式一: 四舍五入 double   f   =   111231.5585; BigDecimal   b   =   new   BigDecimal(f); doub ...

  6. java int 保留两位小数_java 保留两位小数的几种方法

    1.代码: import java.math.BigDecimal; import java.text.DecimalFormat; import java.text.NumberFormat; pu ...

  7. java 两位小数_java保留两位小数及多位小数的方法 | 夕辞

    在JAVA代码开发中,我们经常用到对小数的处理,很多场景下要保留几位小数,比如在支付场景和订单中对金额的处理中,这个有很多方法,以下就介绍下常用的几种方法,我们以保留两位小数为例. [推荐]第一种:S ...

  8. java 保存2位小数_java 保留2位小数

    java 保留2位小数 java  保留2位小数  转载 方式一: 四舍五入 double   f   =   111231.5585; BigDecimal   b   =   new   BigD ...

  9. long类型保留两位小数_java保留两位小数问题

    java 保留两位小数问题: 方式一: 四舍五入 double   f   =   111231.5585; BigDecimal   b   =   new   BigDecimal(f); dou ...

最新文章

  1. 双十一:你收到了多少商家短信
  2. boost::core模块实现分配器重新绑定的实例
  3. 【机器视觉】Qt集成Halcon开发环境详解(二)
  4. php如何新建xml文件,PHP新建XML打开XML读取XML怎么写
  5. python数据结构《排序专题复习》
  6. Ubuntu 修改默认的PDF打开方式
  7. sdut 区间覆盖问题
  8. python pandas 数据库_Python中pandas函数操作数据库
  9. android cpu 压力测试,两个古董级压力测试工具 leakyapp.exe 和 cpustre.exe
  10. HDU - 1087
  11. sv_labs学习笔记——sv_lab3(System Verilog)
  12. arduino 土壤温湿度传感器_三分钟告诉你Arduino是什么
  13. Sun JVM 内存管理、参数与调优、内存分配与回收策略、GC 日志配置使用详解
  14. canpro脚本_shell脚本实现-----自动巡检脚本.sh
  15. Nuxt.js 如何做SEO优化
  16. centos7操作系统下编译安装veracrypt
  17. 计算机模拟地球爆炸,地球爆炸模拟器最新版
  18. 【深度学习】手写数字识别Tensorflow2实验报告
  19. linux cfs时间,Linux调度的实现(CFS)——虚拟时间计算
  20. Vue教程03-Vue脚手架开发环境

热门文章

  1. java正则表达式去除html标签
  2. 生态集成墙面为何近几年发展如此迅猛?
  3. Android SurfaceView使用详解(很好的实战例子)
  4. rssi测距原理及公式
  5. 基于单片机超声波测距
  6. IOC(一) - 初识
  7. 知识蒸馏基础及Bert蒸馏模型
  8. 【复习】进程、线程、协程篇,线程锁之Lock\Rlock\信号量、Event事件、Queue队列
  9. Spring多数据源TransactionManager冲突解决方案
  10. 一篇搞懂关于计算机的减法运算