java 科学计数法位数_JAVA如何将浮点数输出为指定位数的科学计数法?

可以使用库函数2113atof。1 函数名 atof2 声明 double atof(const char *nptr);3 头文5261件#include 4 功能将参数nptr中的字符串转为浮点型数4102据并返回。5 需要注意的是,1653必须是合法的字符串,即以实数形式或者科学计数法形式存储的字符串才可以进行转换,否则转换会出错。 比如"sjdhk"这样的字符串是无法转换为浮点数的。而如果是"1.23sdf"这样的形式,只会处理到最后一个数字,结果为1.23。5 示例代码#includeint main(){char*a="-100.23";//实数形式存储的字符串 char*b="200e-2";//科学计数法形式存储的字符串double c;c=atof(a)+atof(b);//转换后为 -100.23+200e-2=-100.23+2=-98.23printf(“c=%.2lf\n”,c);//输出结果,保留2位小数。期望结果为c=-98.23return 0;}www.mh456.com防采集。

^JAVA输出指2113定位数的科学计5261数方法4102:public static String parseToCientificNotation(double value) { int cont = 0; java.text.DecimalFormat DECIMAL_FORMATER = new java.text.DecimalFormat("0.##"); while (((int) value) != 0) { value /= 10; cont++; } return DECIMAL_FORMATER.format(value).replace(",", ".") + " x10^ -" + cont;}调用方法:parseToCientificNotation(123332.4);输出1653:0.1233324 x10^ 6

浮点数,是指小数点在数据中的位置可以左右移动的数据。它通常被表示成: N = M* RE 这里的M(Mantissa)被称为浮点数的尾数,R(Radix)被称为阶码的基数,E(Exponent)被称为阶的阶码。计算机中一般规定R为2、8或16、是一个确定的常数,不需要在浮

希望可以帮到你:5261@4102Testpublic void test4(){        float exp1 = 1.39e-43f;          System.out.println("科学计数法1==" + exp1);// 表示16531.39乘以10的负43次方            double exp2 = 47 * 10000000000000000000000000000000000000d;          System.out.println("科学计数法2==" + exp2);// 表示47乘以10的37次方===4.7E38            float exp3 = 1e-43f;// 此时43后面必须加上f,否则会报错.编译器同擦汗那个会将指数最为双精度处理。          System.out.println("科学计数法3==" + exp3);// 表示1乘以10的负43次方          System.out.printf("%9.2f",exp3);        System.out.printf("%-9.2f",exp3);//        long n = 200;// 此时不需要在200后面加l,因为编译器能识别这个类型,在这里不存在含混不清的地方。  //        System.out.println(n);  //        //        double d = 345.678;  //        String s = "hello!";   //        int i = 1234;  //        //"%"表示进行格式化输出,"%"之后的内容为格式的定义。  //        System.out.printf("%f",d);//"f"表示格式化输出浮点数。  //        System.out.printf("%9.2f",exp3);//"9.2"中的9表示输出的长度,2表示小数点后的位数。  //        System.out.printf("%+9.2f",d);//"+"表示输出的数带正负号。  //        System.out.printf("%-9.4f",d);//"-"表示输出的数左对齐(默认为右对齐)。  //        System.out.printf("%+-9.3f",d);//"+-"表示输出的数带正负号且左对齐。  //        System.out.printf("%d",i);//"d"表示输出十进制整数。  //        System.out.printf("%o",i);//"o"表示输出八进制整数。  //        System.out.printf("%x",i);//"d"表示输出十六进制整数。  //        System.out.printf("%#x",i);//"d"表示输出带有十六进制标志的整数。  //        System.out.printf("%s",s);//"d"表示输出字符串。  //        System.out.printf("输出一个浮点数:%f,一个整数:%d,一个字符串:%s",d,i,s);//可以输出多个变量,注意顺序。  //        System.out.printf("字符串:%2$s,%1$d的十六进制数:%1$#x",i,s);//"X$"表示第几个变量。  }追问为什么System.out.printf("%9.2f",exp3);System.out.printf("%-9.2f",exp3);这两段代码我的输出结果是0.00本回答被提问者和网友采纳

标准c中并未规定浮点型的长度和格式,只说了精度约为7位,所以不一定就是7位。 后面的可以不用写e。float本来就有两种表示方法,一种是通常的带小数点的十进制数形式,另一种为科学计数法,这里为第一种,可以不用。像这种要求精确的数据建议使

使用bigdecimal类型

//你的要求很特别,不管怎么说,这个基本达到你的要求了 #include #include #include #include using namespace std; void myPrint(double d){ std::stringstream ss1,ss2; std::string text = ""; ss1> text; if(text.find('e')!=string::npos){

5261int CountNeg(float a)  4102{   1653int n = 0;   while((a = a * 10) < 10)    ++n;   return n;  }    void EOut(float a, float b)  {   if (a < b)    return;   int na = CountNeg(a);   int nb = CountNeg(b);   for(int i = 0; i < na; i++)    a *= 10;   for(int i = 0; i < nb - na; i++)    b *= 10;   printf("%f±%fE%d", a, b, na * -1);  }  int main()  {   float a = 9.168e-3, b = 2.214e-5;   EOut(a, b);   return 0;  }  ,考虑格式化的输出就可以拉内容来自www.mh456.com请勿采集。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值