科学计数法

PAT B1024 科学计数法 (20分)

南笙酒味 提交于 2020-01-16 23:53:21
题意:首先浮点数部分必有1位小数,指数部分必为整数。其次要求保留所有有效位。 我将其拆分为2个字符串保存,左边的浮点数部分(去掉小数点)num,右边的指数部分exp。均包含符号。首先输出最前面的符号,为正不处理。n为exp的绝对值。然后根据指数的正负:若为负数,共计输出n个0。若为正数,区分为n>=valid_digit和n<valid_digit。前者无小数点,后者需要在适当的位置输出小数点。若为0,当然经过测试,测试数据中不含0指数,严谨起见还是加上,则原样输出。 //1024 科学计数法 (20分) #include <cstdio> char num[10000] = { 0 }; char exp[10000] = { 0 }; int main() { int i, j; i = j = 0; char ch; while ((ch = getchar()) != 'E') { if (ch == '.') { continue; } num[i++] = ch; } while ((ch = getchar()) != '\n') { exp[j++] = ch; } if (num[0] == '-')//最前面的符号部分 putchar('-'); int valid_digit = i - 2;//小数部分的有效位数是i-2 int n = 0; sscanf

2-03浮点数和科学计数法

女生的网名这么多〃 提交于 2020-01-16 05:36:10
浮点数 浮点数是属于有理数中谋特定子集的数的数字表示,在计算机中用以近似表示任意某个实数。具体的说,这个实数由一个整数或定点数(即尾数)乘以某个基数的整数次幂得到(10**4,10为基数),这种表示方法类似于基数为10的科学计数法。 有理数 在数学上,有理数是一个整数a和一个非零整数b的比,例如3/8,通常为a/b,又称作分数,0也是有理数,有理数是整数和分数的集合,整数也可以看做是分母为一的分数。 有理数的小数部分是为有限或为无限循环的数。 无理数 无理数,也称为无限不循环小数,不能写作两个整数之比。若将它写成小数形式,小数点之后的数字有无限多个,并且不会循环。常见的无理数有非完全平方数的平方根、圆周率pi和e 实数 实数,是有理数和无理数的总和。 科学记数法(scientific notation) 科学记数法是指把一个数表示成a*10的n次幂的形式(1<=a<10,n为正整数)。例如:19971400000000=1.99714*10^13。计算器或电脑表达10的幂一般是用E或e,也就是 1.99714E13 。用幂的形式,有时可以方便的表示日常生活中遇到的一些较大的数。 复数 复数是指能写成如下形式的数a+bi,这里a和b是实数,i是虚数(即-1开根)。在复数a+bi中,a成为复数的实部,b称为复数的虚部,i称为虚数单位。当虚部等于零时,这个复数就是实数;当虚部不等于零时

P 1024 科学计数法

泪湿孤枕 提交于 2020-01-11 01:06:51
转跳点: 🐏 1024 科学计数法 科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式 [+-][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   这道题可有意思了,我都被逼的去学了一点正则表达式(原本不想用正则的,但写到一半发现太麻烦,就不写了(捂脸),果然我还是个菜菜)。这道题除了输入之外,没有太多难的地方,就是注意正负号,和小数位的保留。   我代码压缩了一下,时间方面不太理想。(为什么要精简代码?可能我脑子有坑吧) 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string

1024 科学计数法 (20 分)C++ 推荐测试用例 与 示例代码

纵然是瞬间 提交于 2019-12-14 21:58:47
1024 科学计数法 (20 分) 科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式 [±][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 推荐测试用例 + 1.23400E-03 + 1.23400E+03 - 1.23400E-03 - 1.23400E+03 - 1.234E+03 //测试点3,4 示例代码: # include <iostream> # include <string> using namespace std ; int main ( ) { //substr截取字符串 //find返回字符串位置下标 //string

python字符串格式化

倾然丶 夕夏残阳落幕 提交于 2019-12-06 06:21:09
python字符串格式化 Python的字符串格式化有两种方式:%格式符方式,format方式 %格式符 %[(name)][flags][width].[precision]typecode (name) 可选,用于选择指定的key flags 可选,可供选择的值有: + 右对齐;正数前加正好,负数前加负号; - 左对齐;正数前无符号,负数前加负号; 空格 右对齐;正数前加空格,负数前加负号; 0 右对齐;正数前无符号,负数前加负号;用0填充空白处 width 可选,占有宽度 .precision 可选,小数点后保留的位数 typecode 必选 s,获取传入对象的__str__方法的返回值,并将其格式化到指定位置 r,获取传入对象的__repr__方法的返回值,并将其格式化到指定位置 c,整数:将数字转换成其unicode对应的值,10进制范围为 0 <= i <= 1114111(py27则只支持0-255);字符:将字符添加到指定位置 o,将整数转换成 八 进制表示,并将其格式化到指定位置 x,将整数转换成十六进制表示,并将其格式化到指定位置 d,将整数、浮点数转换成 十 进制表示,并将其格式化到指定位置 e,将整数、浮点数转换成科学计数法,并将其格式化到指定位置(小写e) E,将整数、浮点数转换成科学计数法,并将其格式化到指定位置(大写E) f, 将整数

JS 因数值过大变为科学计数法,科学计数法转换为正常数值

匿名 (未验证) 提交于 2019-12-03 00:38:01
JS在处理数值的时候,如果数值小数位数超过6位,就会转换为科学计数法,整数的多于21位也会转为科学计数法,这问题纠结了好久,网上找了好多方法,找到几个比较靠谱的。将数值用parseFloat(num).Fixed(8)保留固定位数,但有个缺点,就是如果数值小于8位的,则会多出余数0,如:0.00000010,这样的方法对于有些人来说显然不可取。还有一种方法就是使用正则匹配是否为科学计数法……..,原文博客: 链接 //将科学计数法转换为小数 function toNonExponential (num) { var m = num.toExponential().match( /\d(?:\.(\d*))?e([+-]\d+)/ ); return num.toFixed( Math .max( 0 , (m[ 1 ] || '' ).length - m[ 2 ])); } 文章来源: JS 因数值过大变为科学计数法,科学计数法转换为正常数值

科学计数法转字符串

匿名 (未验证) 提交于 2019-12-03 00:14:01
20191014 有时需要将表里的 int, double, float תΪ string 类型的(主要的是 int ),但有时 int 在hive里是用 科学计数法来 表示的,不能直接转 string .参考文章 【链接】 . 对于 int 类型,可以直接先转为 bigint 再转为string cast(cast(intnum bigint) as string) 对于一般类型可用下面的语句(不是我写的0-0,但可以顺便学习了下hive里的 正则表达式 ,记录一下) --处理非科学计数法表示的字符串 --变量 :${hivevar:bignum} select case --处理非科学计数法表示的字符串 when length(regexp_extract('${hivevar:bignum}','([0-9]+\\.)([0-9]+)(E-*[0-9]+)',2)) = 0 then '${hivevar:bignum}' --处理整数 when length(regexp_extract('${hivevar:bignum}','([0-9]+\\.)([0-9]+)(E[0-9]+)',2)) <= cast(regexp_extract('${hivevar:bignum}','(E)([0-9]+)',2) as int) then rpad(regexp

hive科学计数法引发的问题

匿名 (未验证) 提交于 2019-12-03 00:14:01
20191011 (1) 20191010 hive 中 数值类型 和字符串类型 string 运算 hive中 数值类型 可以和和字符串类型 string 运算,其中字符串为 纯数字类型 ,都转为了浮点类型 double .若字符串不为 纯数字类型 ,计算结果则为 NULL . select 3 * '2' 6.0 select 3 * '2.2' 6.6 select '3' * '2' 6.0 (2) 20191010 hive中使用联结 union all union all 中的子查询要求 相同的列数 ,对应字段 类型相同 或可以 隐式转化为同一种类型 (3) 20191010 hive中 int double float ת string 出现科学计数法 hive中 int , float , double 这些数值类型在存储 大额度数字 时,在前端展现上总是使用 科学计数法 来表示,其实无论是普通的表示方式还是科学计数法表示,只是一个习惯问题,结果都是一样的。 可是不能理解的是当把 数值类型 转化成 字符串类型 以后hive竟然把数值转换成了 科学计数法表示的字符串 而非 数值本身的字符串 处理方法参考下面链接, 整数 直接先转成 bigint ,若是 小数 需要特殊处理 参考1-hive中科学计数法 【坑】若是(1)-(3)正好同时出现,一步小心就会有有问题

js处理科学计数法

匿名 (未验证) 提交于 2019-12-03 00:07:01
本文转载至: 原文链接 function toolNumber ( num_str ) { num_str = num_str . toString (); if ( num_str . indexOf ( "+" ) != - 1 ) { num_str = num_str . replace ( "+" , "" ); } if ( num_str . indexOf ( "E" ) != - 1 || num_str . indexOf ( "e" ) != - 1 ) { var resValue = "" , power = "" , result = null , dotIndex = 0 , resArr = [], sym = "" ; var numStr = num_str . toString (); if ( numStr [ 0 ] == "-" ) { //如果为负数,转成正数处理,先去掉‘-’号,并保存‘-’. numStr = numStr . substr ( 1 ); sym = "-" ; } if ( numStr . indexOf ( "E" ) != - 1 || numStr . indexOf ( "e" ) != - 1 ) { var regExp = new RegExp ( "^(((\\d+.?\\d+)|(\\d+))

基于有限状态自动机的数据类型识别功能(3)

匿名 (未验证) 提交于 2019-12-02 21:45:52
Check_science() 1 private void Check_science(String Nowline,int i) { 2 int k=Nowline.lastIndexOf('.',i)-1;//找到e最近的左边. 3 int j=Nowline.lastIndexOf(' ',i); 4 if(j!=-1) {//有空格时 5 if(k<=j)//点在空格前面或者点前一个位置就是空格 6 Check=false; 7 else if(Nowline.charAt(k)>='0' 8 &&Nowline.charAt(k)<='9' 9 &&(Nowline.charAt(k-1)==' ') 10 ) 11 Check=true; 12 else 13 Check=false; 14 } 15 else if(k==0) 16 Check=true; 17 else 18 Check=false; 19 } 这个函数用于检查所输入的行里的科学计数法是否符合格式 输入输出如下: 从图中可以看到第四位是科学计数法数字 在一行中判断科学计数法的格式是否正确有点困难,我用的算法如下 (1)找到离字母e左边最近的小数点 (2)找到离字母e左边最近的空格 (3)如果空格在小数点左边 那么该小数点属于科学记数法的小数点   3