精华内容
下载资源
问答
  • Java:保留位有效数字

    千次阅读 2021-02-26 17:08:14
    来自例子:保留3位有效数字1,239,451 ===》 1,240,00012.1257 ===》12.1.0681 ===》.06815 ===》5代码实现public static double roundToSignificantFigures(double num, int n) {if(num == 0) {return 0;}final ...

    来自

    例子:保留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.

    09ddca8b17ef?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

    展开全文
  • js math保留小数

    2021-08-30 10:05:17
    四舍入(小数部分) Math.round(5.1234);// 5 Math.round(5.6789);// 6 // 5.绝对值 Math.abs(-1);// 1 // 6.返回两者中的较大值 Math.max(1,2);// 2 // 7.返回两者中的较小值 Math.min(1,2);// 1 // 随机数(0-1) ...

    1. 最笨的办法....... [我就怎么干的.........]

    function get()
    {
        var s = 22.127456 + "";
        var str = s.substring(0,s.indexOf(".") + 3);
        alert(str);
    }

    2. 正则表达式效果不错

    3. 他就比较聪明了.....

    4.会用新鲜东西的朋友....... 但是需要 IE5.5+才支持。

    // 1.只保留整数部分(丢弃小数部分)

    parseInt(5.1234);// 5

    // 2.向下取整(<= 该数值的最大整数)和parseInt()一样

    Math.floor(5.1234);// 5    

    // 3.向上取整(有小数,整数就+1)

    Math.ceil(5.1234);

    // 4.四舍五入(小数部分)

    Math.round(5.1234);// 5

    Math.round(5.6789);// 6

    // 5.绝对值

    Math.abs(-1);// 1

    // 6.返回两者中的较大值

    Math.max(1,2);// 2

    // 7.返回两者中的较小值

    Math.min(1,2);// 1

    // 随机数(0-1)

    Math.random();

    展开全文
  • 1)使用.tostring(“0.00”) double data = 5.996;...2)对于1)中的方式将double类型的数据写入到Excel表格时会变为文字类型,写入Excel中的数据保留位有效数字的方式 HSSFWorkbook workbook; ...

    1)使用.ToString(“0.00”)

    	 double data = 5.996;
         Console.WriteLine(data.ToString("0.00"));//结果输出为6.00
    

    2)对于1)中的方式将double类型的数据写入到Excel表格时会变为文字类型,写入Excel中的数据保留两位有效数字的方式

    		  HSSFWorkbook workbook;
              if (File.Exists(fileName))
             {
                    using (FileStream stream = File.OpenRead(fileName))
                    {
                        workbook = new HSSFWorkbook(stream);
                    }
             }
             else
            {
                    workbook = new HSSFWorkbook();
             }
    
    		ICellStyle style = wb.CreateCellStyle();
            style.DataFormat = HSSFDataFormat.GetBuiltinFormat("0.00");
    
    展开全文
  • java 小数点后保留位有效数字今天偶尔用到了UI布局需要把BigDecimal格式显示出来,显示的格式是小数点后保留,比较可悲的是搜索的结果大同小异,基本都是种方式。目前在国内好像出现了一种奇怪的现象,有一...

    java 小数点后保留两位有效数字

    今天偶尔用到了UI布局需要把BigDecimal格式显示出来,显示的格式是小数点后保留一位,比较可悲的是搜索的结果大同小异,基本都是五种方式。目前在国内好像出现了一种奇怪的现象,有一个人写了播放,其他人遇到类似的问题后,基本都是转载或者直接拷贝发表成自己的文章。几乎没有任何的加工和严重,更不能说出什么理由说出自己这么做,哦忘记了,可能有一条理由,那就是很多招聘jd上写着,有博客者加分。很想问一下这样简单的转载或者拷贝不加上自己的验证或者思考能加分吗?如果我是面试官,我很可能会直接pass了,为什么?太懒了,无论是手懒还是思维懒都会对自己的职业产生不利的影响。

    我自己的想法

    你可能会说你自己的想法干我毛用,的确没什么用,但是自己后悔后想起的时候可能就有毛用了。很多大虾,大侠,大神都说不要造轮子,更不要重复造轮子,要使用已经验证的直接拿来就好用的。理论上没错,但是有一点错了,那就是他们已经理解了轮子的原理,已经会早轮子了,而不是像很多人只是会用那样简单。记住别人的经验一定不适合你,别老是找相似点,那样越发的觉得自己像大神,要找不同点,这样才会像自己,最终才是大神。

    结束废话进入正题

    引入搜索结果五种保留两位小数的方法

    以下是网络常见的五种方法,这里我贴上验证的完整代码以便于其他同学验证

    public class TestJava {

    public static void main(String[] args) {

    BigDecimal bigDecimal = new BigDecimal("100.000");

    BigDecimal bigDecimal2 = new BigDecimal("0.0810");

    method1(bigDecimal);

    method1(bigDecimal2);

    System.out.println("----------------------------------------");

    method2(bigDecimal);

    method2(bigDecimal2);

    System.out.println("----------------------------------------");

    method3(bigDecimal);

    method3(bigDecimal2);

    System.out.println("----------------------------------------");

    method4(bigDecimal);

    method4(bigDecimal2);

    System.out.println("----------------------------------------");

    method5(bigDecimal);

    method5(bigDecimal2);

    }

    /**

    * 方法一

    * @param f

    */

    public static void method1(BigDecimal f){

    //BigDecimal bg = new BigDecimal(f);

    double f1 = f.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();

    System.out.println("mehtod1 result is:"+f1);

    }

    /**

    * 方法二

    * @param f

    */

    public static void method2(BigDecimal f){

    DecimalFormat df = new DecimalFormat("#.00");

    System.out.println("mehtod2 result is:"+df.format(f));

    }

    /**

    * 方法三

    * @param f

    */

    public static void method3(BigDecimal f){

    System.out.println("mehtod3 result is:"+String.format("%.2f", f));

    }

    /**

    * 方法四

    * @param f

    */

    public static void method4(BigDecimal f){

    NumberFormat nf = NumberFormat.getNumberInstance();

    nf.setMaximumFractionDigits(2);

    System.out.println("mehtod4 result is:"+nf.format(f));

    }

    /**

    * 方法五

    * @param f

    */

    public static void method5(BigDecimal f){

    float floatValue= f.floatValue();

    float num=(float)(Math.round(floatValue*100)/100);

    System.out.println("mehtod5 result is:"+num);

    }

    }

    验证结果

    mehtod1 result is:100.0

    mehtod1 result is:0.08

    ----------------------------------------

    mehtod2 result is:100.00

    mehtod2 result is:.08

    ----------------------------------------

    mehtod3 result is:100.00

    mehtod3 result is:0.08

    ----------------------------------------

    mehtod4 result is:100

    mehtod4 result is:0.08

    ----------------------------------------

    mehtod5 result is:100.0

    mehtod5 result is:0.0

    看出什么了吗?仅仅把代码贴到IDE里面验证一下就可以得出上面的结论。这里是有BigDecimal来兼容所有数字类型。

    得出的结论

    目前只有第三种办法字符串处理是比较好用的,但是效率却不是最高的,有没有更好的答案呢?一定有的,欢迎来砸,如果我自己找到也补充上。

    展开全文
  • 主要介绍了C#中decimal保留2位有效小数的实现方法,针对decimal变量保留2位有效小数有多种方法,可以使用Math.Round方法以及ToString先转换为字符串等操作来实现。具体实现方法感兴趣的朋友跟随小编一起看看吧
  • 简单的说,把一个数字前面的0都去掉,从第一个正整数到精确的数止所有的都是有效数字了。 如:0.0109,前面两个0不是有效数字,后面的109均为有效数字(注意,中间的0也算)。 BigDecimal类型的小数可以使用...
  • 计算过程中发现,如果不控制保留的小数有效数字,会出现求出nan的情况,因此,需要限制保留的小数位数 Solution #include<iostream> #include<math.h> using namespace std; int main() { float a = ...
  • Java保留6位有效数字

    2021-08-09 20:19:36
    保留 6 位有效数字,且不使用科学计数法 输出样例 166.667 代码 import java.math.*; double a=500,b=3; BigDecimal m = new BigDecimal(String.valueOf(a/b)); BigDecimal divisor = BigDecimal.ONE; ...
  • js计算精度问题-保留位有效数字

    千次阅读 2020-07-10 16:04:18
    所以四舍保留有效数字一定不能简单粗暴地用这种方式,否则后果就是要改。 那有没有更好的方式去解决这个问题呢,答案一定是yes, 那就是Math.round(num) Math.round(num) 函数返回一个数字四舍
  • function sixNum(num){ return Math.floor(num * 1000000) / 1000000 } sixNum(12.123456789) //12.123456
  • 1.问题描述: 最近在处理软件结果显示时,发现如果利用 Math.Round(Number,N) 取N为小数时,有的结果不能显示完全 ...我想要的结果是 15.32 和 0.0011(保留位有效数字),怎么实现呢? - class Program { ...
  • 保留n位有效数字

    2021-02-04 17:11:42
    * 保留n位有效数字 * @param num * @return */ public static Double roundToSignificantFigures(double num, int n) { if (num == 0) { return 0.0; } final double d = Math.ceil(Math.log10(num < 0 ...
  • 保留位有效数字----java

    千次阅读 2019-11-13 17:08:27
    * 数字格式化 - 最少保留{num}位有效数字 - 保留 {min}~{max} 为小数 - format02 */ public static String formatSignificantDigit(Double price) { int min = 2; int max= 8; int num = 3; boolean sign = ...
  • /// 保留位有效数字,而不是2小数 /// </summary> /// <param name="DNumber"></param> /// <returns></returns> private string ConvertNumber(double DNumber) { int ...
  • let value=Math.round(parseFloat(value)*100)/100; let keepThree=value.toString().split("."); if(keepThree.length==1){ value=value.toString()+".000"; return value; } if(keepThree.length>1){ ...
  • java.math.BigDecimal保留位有效数字

    千次阅读 2009-07-28 11:35:24
    new java.math.BigDecimal(abc).setScale(2,java.math.BigDecimal.ROUND_HALF_UP).doubleValue()); setScale()方法的第一为小数点后面的位数!若小数点后面的位数小于setScale()方法所设定...
  • // 求1.2的3次方 double result = Math.pow(a, b); System.out.println(result); DecimalFormat format = new DecimalFormat("#0.00"); // 结果四舍入 System.out.println(format.format(result)); ...
  • import java.math.BigDecimal; import java.text.DecimalFormat; import java.text.NumberFormat; public class format {  double f = 12345.67890;    /**  *法一:  */  ...
  • java 保留位有效数字

    千次阅读 2016-08-18 15:28:57
    java 保留位有效数字的方法
  • java保留位有效数字

    万次阅读 2015-06-02 21:32:22
    java保留小数问题: 方式一: 四舍入  double f = 111231.5585;  BigDecimal b = new BigDecimal(f);  double f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();  保留...
  • 前言:作为前端开发人员经常要处理有效数字保留或取整操作,话不多说,如下: 1. 要四舍入的保留和取
  • java保留有效数字

    2021-01-07 14:11:52
    保留2小数</p> * <p>两保留1小数</p> * <p>三保留整数</p> * * @param value 需要处理的double类型数据 * @return 处理完成的数据 */ private double ...
  • 保留位有效数字 函数

    千次阅读 2014-06-09 15:56:24
    今天做的功能需要对查询结果保留位有效数字
  • js保留小数方法总结

    千次阅读 2020-12-24 15:18:38
    本文是小编针对js保留小数这个大家经常遇到的经典问题整理了在各种情况下的函数写法以及遇到问题的分析,以下是全部内容:一、我们首先从经典的“四舍入”算法讲起1、四舍入的情况var num =2.446242342;...
  • 保留小数的几种方式: 方式一: 四舍入 [java] view plaincopyprint? double f = 111231.5585; BigDecimal b = new BigDecimal(f); double f1 = b.setScale(2, BigDecimal.ROUND_HALF_UP)....
  • C#保留N位有效数字的方法

    千次阅读 2012-09-24 10:27:58
    )Math.Log10(Math.Abs(d)) - 1 ; else n = n + ( int )Math.Log10( 1.0 / Math.Abs(d)); if (n 0 ) { d = ( int )(d / Math.Pow( 10 , 0 - n)) * Math.Pow( 10 , 0 - n); n = 0 ; } ...
  • C# 保留有效数字

    2019-10-15 16:06:32
    /// <summary> /// 保留有效数字 /// </summary> /// <param name="d">数</param> /// <param name="n">几</param> /// <returns><...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 21,962
精华内容 8,784
关键字:

math保留5位有效数字