精华内容
下载资源
问答
  •  // 处理科学计数法  public static String orinum(String str){  int index = str.indexOf("E");  String lstr = str.substring(index + 1, str.length());  int pindex = str.indexOf("."); // System.out....

     package com.nec.fastunit.common;

    import java.math.BigDecimal;


    public class FormatNumber {

     public static String formatNumber(String number,int weishu){
     
       // 判断字符串是否为空
       if(number == null || (number.trim().length() == 0)){
    //    System.out.println("输入的数字为空,请输入数字");
        return "";
       }
     
      //  判断字符串里有除点号之外的非数字存在
      char[] strArray = number.toCharArray();

      for(int i = 0; i < strArray.length; i++){
       if((strArray[i] < '0' || strArray[i] > '9')&& (strArray[i] != '.' && strArray[i] != '-' && strArray[i] != 'E')){
    //    System.out.println("您输入的字符串中含有非法字符,请重新输入");
        return number;
       }else if(strArray[i] == 'E'){
        if(strArray[0] == '-'){
         number = number.substring(1,number.length());
         String numstr = orinum(number);
         numstr = "-" + numstr;
         number = numstr;
        }else{
         number = orinum(number);
        }
       
        }
      }
     
      // 四舍五入后得数
      number = String.valueOf(numz(Double.valueOf(number),weishu));
     
      // 判断小数位数为0的情况
      if(number.indexOf(".") != -1 && weishu == 0){
      
       int pointNumber = number.indexOf(".");
       String strFirst = number.substring(0,pointNumber);
      
       // 小数点前字符串分割
       strFirst = splitFirstNumber(strFirst);
       return strFirst;
      
      }
     
     
      // 判断没有小数点,但小数位数要求有位数的情况
      if(number.indexOf(".") == -1 && weishu != 0){
      
       number = number + ".";
       for(int i = 0; i < weishu; i++){
        number = number + "0";
       }
      
       int pointNumber = number.indexOf(".");
       String strFirst = number.substring(0,pointNumber);
       String strLast = number.substring(pointNumber + 1,number.length());
      
       // 小数点前字符串分割
       strFirst = splitFirstNumber(strFirst);
      
       // 小数点后字符串分割
       strLast = splitLastNumber(strLast);
      
       return strFirst + "." + strLast;
      
      }
     
      // 判断没有小数部分的情况
      if((number.indexOf(".") == -1) && weishu == 0){
      
       // 小数点前字符串分割
       number = splitFirstNumber(number);
       return number;
      } else {
       int pointNumber = number.indexOf(".");
       String strFirst = number.substring(0,pointNumber);
       String strLast = number.substring(pointNumber + 1,number.length());
      
       // 小数位数判断
       strLast = formatPoint(strLast,weishu);
      
       // 小数点前字符串分割
       strFirst = splitFirstNumber(strFirst);
      
       // 小数点后字符串分割
       strLast = splitLastNumber(strLast);
      
      
       return strFirst + "." + strLast;
      
      }
     }
     
     /**
      *
      * @param str 小数点前的字符串
      * @return 返回小数点前的逗号分割
      */
     public static  String splitFirstNumber(String str){
      char[] strArray = str.toCharArray();
      if(strArray[0] == '-'){
       StringBuffer strBuffer = new StringBuffer();
        strBuffer.append(str);
        strBuffer.reverse();
        str = strBuffer.toString();
        StringBuffer sb = new StringBuffer();
        for(int i = 0; i <  str.length(); i=i+3){
         if(i+3 < str.length()){
          String str1 = str.substring(i,i+3);
          sb.append(str1);
           if(i+3 == str.length() -1){
            //
           }else{
            sb.append(",");
           }
         } else {
          String str2 = str.substring(i,str.length());
          sb.append(str2);
         }
        }
        sb.reverse();
        return sb.toString();

      }else{
       StringBuffer strBuffer = new StringBuffer();
        strBuffer.append(str);
        strBuffer.reverse();
        str = strBuffer.toString();
        StringBuffer sb = new StringBuffer();
        for(int i = 0; i <  str.length(); i=i+3){
         if(i+3 < str.length()){
          String str1 = str.substring(i,i+3);
          sb.append(str1);
          sb.append(",");
         } else {
          String str2 = str.substring(i,str.length());
          sb.append(str2);
         }
        }
        sb.reverse();
        return sb.toString();
      }
     }
     
     /**
      *
      * @param str 小数点后字符串
      * @return 逗号分割后的字符串
      */
     public static String splitLastNumber(String str){
      StringBuffer sb = new StringBuffer();
      for(int i = 0; i <  str.length(); i=i+3){
       if(i+3 < str.length()){
        String str1 = str.substring(i,i+3);
        sb.append(str1);
        sb.append(",");
       } else {
        String str2 = str.substring(i,str.length());
        sb.append(str2);
       }
      }
      return sb.toString();
     }
     
     /**
      *
      * @param laststr 小数点后字符串
      * @param bitWei 截取的字符串长度
      * @return  返回小数点后应得的字符串
      */
     public static String formatPoint(String laststr,int bitWei){
      int n = laststr.length();
      if(n < bitWei){
       for(int i = 0; i < bitWei - n; i++){
        laststr = laststr + "0";
       }
      } else {
       BigDecimal bd = new BigDecimal("0." + laststr).setScale(bitWei,BigDecimal.ROUND_HALF_UP);
       laststr = bd.toString();
       laststr = laststr.substring(2,laststr.length());
      }
      return laststr;
     }
     
     // 处理科学计数法
     public static String orinum(String str){
      int index = str.indexOf("E");
      String lstr = str.substring(index + 1, str.length());
      int pindex = str.indexOf(".");
    //  System.out.println("pindex: " + pindex);
     
      // 取小数点后到E之间的字符串
      String  midstr = str.substring(pindex + 1,index);
     
      // 取小数点前字符
      String pstr = str.substring(0,pindex);
     
      // 判断E后数字是正还是负
      Integer e = Integer.parseInt(lstr);
      String nstr = null;
      if(e > 0){
       if(midstr.length() > e){
        nstr = pstr + midstr.substring(0,e) + "." + midstr.subSequence(e, midstr.length());
       }else{
        nstr = pstr + midstr;
        for(int i = 0; i < e  - midstr.length(); i++){
        nstr = nstr  + "0";
        }
       }
      }else{
       if(pstr.length() > -e){
        nstr = pstr.substring(0,pindex + e) + "." + pstr.substring(pindex+e,pstr.length()) + midstr;
       }else{
        nstr = pstr + midstr;
        for(int i = 0; i < -e - pstr.length(); i++){
         nstr = "0" + nstr;
        }
        nstr = "0." + nstr;
       }
      }
      return nstr;
     }
     
     public static double numz(double numstr,int bitshu){
      BigDecimal b = new BigDecimal(Double.toString(numstr));
      String finalnum =  b.setScale(bitshu, BigDecimal.ROUND_HALF_EVEN).toString();
      return Double.valueOf(finalnum);
      }
    }

    展开全文
  • ① C语言 科学计数法问题精度不够2.23456789123456789123456789 e 202.23456789123456770000223456789123456760000.000000第二个数是a输入后的打印结果,double支持不了这么多精度。不要输入精度这么高的就没有问题...

    ① C语言 科学计数法问题

    精度不够

    2.23456789123456789123456789 e 20

    2.23456789123456770000

    223456789123456760000.000000

    第二个数是a输入后的打印结果,double支持不了这么多精度。不要输入精度这么高的就没有问题。

    ② c语言用单精度浮点数输出科学计数法的问题,求高手来

    float的精度问题啊,float只有四个字节,精度很低。

    如果你的程序是由double就可以保障比较高的精度了,但也不是绝对的精度,浮点数存储,永远有精度范围,不是绝对精度(和int整数类型不一样)#include

    main()

    {

    doublet=3e+12;

    printf("t=%lf

    ",t);/*此处输出双精度浮点数*/

    }

    ③ c语言程序设计,科学计数法的问题

    1)float接受十进制数字作为赋值时精度只有6位有效数字,即:

    float f = 0.339062543;

    std::cout<

    则输出是0.339063

    2)double接受十进制数专字作为赋值时精度属有15位有效数字,如果想在输出时改变输出精度,可以有很多办法,例如使用setprecision():

    double d = 0.339062543787323;

    std::cout<<:setprecision>

    setprecision()在

    ④ 科学计数法用c语言如何编写

    double PI = 3.141592653589793;

    printf("%e",PI);

    ⑤ c语言中的科学计数法。。一道题

    _下划线可以当成普抄通字母一样使用袭,可放成任意位置,_a跟a_一样,是变量名;

    e是科计数法,如23e5,表示23*10^5,1e-1表示1*10^-1=0.1;

    浮点数省略表示法:.5代表0.5,1.代表1.0

    所以上面的表达式是错误的。如果改成

    _a=-1.e-1就对了,此时_a=-0.1

    ⑥ C语言中的科学计数法能表示整型常量么

    0.03*100是实型,因为0.03是实数

    b是

    0.329*100不是常量,很显然,这个需要进行运算,当然不是常量了

    对,不过实型不一定是浮点型,因为除了float还有double

    ⑦ C语言问题,科学计数法

    long 表示变量类型 long int, 不是 float, 不是 double,

    输出格式 long int, 要用 %d

    double a = 42.321e2;

    printf("%lf",a);

    就对了。

    ⑧ C语言中、科学计数法1.23456e+002具体代表什么意思、或者说怎么理解这个数

    e+002 表示10 的2次方。 科学计数法, 用e 表示10 , 加号表示正整数次方, 减号,表示负整数次方, 这里就是等于 123.456

    ⑨ c语言的编程中实型常量中的科学计数法不懂,求赐教,变成数学是什么

    e相当于分隔符,前面表示一个数,后面表示的是10的指数。如1.23e+2表示1.23×10^2(^表示次方)

    ⑩ c语言编程输入一个整数,输出它的十六进制、八进制、十进制、科学计数法

    //C语言:

    #include

    intmain(void)

    {

    inta;

    scanf("%d",&a);

    printf("8进制:%o

    10进制:%d

    16进制:%x

    科学记数法:%e",a,a,a,a);

    return0;

    }

    //C++:

    #include

    usingnamespacestd;

    intmain()

    {

    inta;

    cin>>a;

    cout<

    cout<

    cout<

    cout<

    return0;

    }

    展开全文
  • When the numbers are really small, Matlab automatically shows them formatted in Scientific Notation.Example:A = rand(3) / 10000000000000000;A =1.0e-016 *0.6340 0.1077 0.64770.3012 0.7984 0...

    When the numbers are really small, Matlab automatically shows them formatted in Scientific Notation.

    Example:

    A = rand(3) / 10000000000000000;

    A =

    1.0e-016 *

    0.6340 0.1077 0.6477

    0.3012 0.7984 0.0551

    0.5830 0.8751 0.9386

    Is there some in-built function which returns the exponent? Something like: getExponent(A) = -16?

    I know this is sort of a stupid question, but I need to check hundreds of matrices and I can't seem to figure it out.

    Thank you for your help.

    解决方案

    Basic math can tell you that:

    floor(log10(N))

    The log base 10 of a number tells you approximately how many digits before the decimal are in that number.

    For instance, 99987123459823754 is 9.998E+016

    log10(99987123459823754) is 16.9999441, the floor of which is 16 - which can basically tell you "the exponent in scientific notation is 16, very close to being 17".

    Floor always rounds down, so you don't need to worry about small exponents:

    0.000000000003754 = 3.754E-012

    log10(0.000000000003754) = -11.425

    floor(log10(0.000000000003754)) = -12

    展开全文
  • 科学计数法

    2017-07-30 22:36:46
    科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[+-][1-9]”.”[0-9]+E[+-][0-9]+,即数字的整数部分只有1位,小数部分至少...每个输入包含1个测试用例,即一个以科学计数法表示的实数A

    科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[+-][1-9]”.”[0-9]+E[+-][0-9]+,即数字的整数部分只有1位,小数部分至少有1位,该数字及其指数部分的正负号即使对正数也必定明确给出。
    现以科学计数法的格式给出实数A,请编写程序按普通数字表示法输出A,并保证所有有效位都被保留。

    输入格式:
    每个输入包含1个测试用例,即一个以科学计数法表示的实数A。该数字的存储长度不超过9999字节,且其指数的绝对值不超过9999。
    输出格式:
    对每个测试用例,在一行中按普通数字表示法输出A,并保证所有有效位都被保留,包括末尾的0。

    输入样例1:
    +1.23400E-03
    输出样例1:
    0.00123400

    输入样例2:
    -1.2E+10
    输出样例2:
    -12000000000


    代码

    #include<iostream>
    #include<string.h>
    
    using namespace std;
    
    int main()
    {
        char a[10000] = {'0'};
        int dot = 0,e = 0;
    
        cin >> a;
        if (a[0] == '-')
        {
            cout << "-";
        }
        for (int i = 1; i < strlen(a); i++)
        {
            if (a[i] == '.')
                dot = i;     //确定小数点位置
            else if (a[i] == 'E')
                e = i;
        }
        int index = 0;
        int j = 1;
    
        /*计算指数值*/
        for (int i = strlen(a) - 1; i > e + 1; i--)
        {
            index += (a[i] - '0')*(j);
            j *= 10;
        }
    
        /*指数值为负数*/
        if (a[e + 1] == '-')
        {
            cout << "0.";
            for (int i = 0; i < index - 1; i++)
            {
                cout << '0';
            }
            for (int i = 1; i < e; i++)
            {
                if(a[i]!='.')
                    cout << a[i];
            }
        }
    
        /*指数值为正*/
        else if (a[e + 1] == '+')
        {
            if(index >= e - dot - 1)   //指数值大于等于小数位数,输出不含小数点
            {
                for (int i = 1; i < e; i++)
                {
                    if (a[i] != '.')
                    {
                        cout << a[i];
                    }
                }
                for (int i = 0; i < index - (e - dot - 1); i++)
                    cout << '0';
            }
            else             //指数值小于小数位数,输出包含小数点
            {
                dot += index;
                for (int i = 1; i <= dot; i++)
                {
                    if (a[i] != '.')
                        cout << a[i];
                }
                cout << '.';
                for (int i = dot + 1; i < e; i++)
                    cout << a[i];
            }
        }
    
        return 0;
    }
    展开全文
  • python 不以科学计数法输出的方法其实很简单只需两个语句:import numpy as npnp.set_printoptions(suppress=True)这样就可以搞定以上这篇python 不以科学计数法输出的方法就是小编分享给大家的全部内容了,希望能给...
  • 在Qt中,界面经常会用来显示一些结果,当显示的数据值过大时,QT会直接转换成科学计数法显示。 但是在有些项目中,对数据有特定的显示要求,有时候需要用科学计数法显示,有时候一定要用非科学计数法显示。 那么该...
  • 1024 科学计数法

    2018-11-09 12:15:29
    1024 科学计数法 (20 分) 科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式 [+-][1-9].[0-9]+E[+-][0-9]+,即数字的整数部分只有 1 位,小数部分至少有 1 位,该数字及其指数部分...
  • 在QT中,界面经常会需要显示一些结果,当值过大时,QT会直接转成科学计数法显示。但是项目中偶尔对数据有特定的要求,有时需要用科学计数法来显示,有时候一定要非科学计数法显示: double Str; int pos; 科学计数...
  • js科学计数法转换数字 输入32位数字计算后显示的值是科学计数法值,怎么转换成正常数值
  • 科学计数法输入

    千次阅读 2015-05-27 17:23:23
    1103: C二级辅导-阶乘数列 时间限制: 1 Sec 内存限制: 128 MB 提交: 178 解决: 63 [提交][状态][讨论版] ...科学计数法,保留两位小数。 输入 输出 样例输入 样例输出   1103: C二级辅
  • 要求输入科学计数法进行两者之间的加减乘除运算 并以科学计数法的形式输出 如: Values input: 0.25000e3 0.20000el Sum: 0.25200e3 Difference: 0.24800e3 Product: 0.50000e3 Quotient: 0.12500e3
  • 一、转换科学计数法格式在昨天的学习中,不知道大家有没有发现有列数据是依科学计数法的格式显示的,这是因为这列数字太长,默认这样显示。大家知道在Excel中我们把单元格设置为文本类型来输入这些长数字,在python...
  • Java 科学计数法

    2017-03-20 00:34:00
    目录 Java 科学计数法 1 科学计数法的概念 1.1 有效数字 1.2 E记号 2 Java中的科学计数法 2.1 NumberFormat 2.2 DecimalFormat 2.3 BigDecimal ...
  • Excel身份证号输入或复制后粘贴变科学计数法.docx
  • 1024 科学计数法 C++版

    2019-05-03 08:52:40
    科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式 [±][1-9].[0-9]+E[±][0-9]+,即数字的整数部分只有 1 位,小数部分至少有 ...每个输入包含 1 个测试用例,即一个以科学计数法表示...
  • pat.1024 科学计数法

    2019-04-15 15:33:01
    1024科学计数法(20分) 科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式 [+-][1-9].[0-9]+E[+-][0-9]+,即数字的整数部分只有 1 位,小数部分至少有 1 位,该数字及其指数部分的...
  • java科学计数法

    千次阅读 2017-03-17 19:25:00
    1 科学计数法的概念 1.1 有效数字 在一个近似数中,从左边第一个不是0的数字起,到精确到的位数止,这中间的所有数字都叫做这个近似数的有效数字 例如: 890314000保留三位有效数字为8.90×10的8次方 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 23,936
精华内容 9,574
关键字:

怎么输入科学计数法