首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    JavaScript中科学计数法的问题

    JavaScript 中经常会碰到数值计算问题,偶尔会在不经意间报一个不是bug的bug。今天来说说一个特殊的例子。我以0.0011BTC 价格买入 0.0002CZR 计算出了的金额是 0.00000022BTC,而 JavaScript 计算出来的金额是 2.2e-7 。值是对的,只是用了科学计数法,也是数值类型。但是问题来了,一般用户用户看不懂 2.2e-7,那么就把它转换成 0.00000022 吧。然而问题了,我用尽办法,怎么样都无法将 2.2e-7 转换成直观的 0.00000022。或许你会嘲笑我,告诉我直接用 .toFixed() 方法。但是新问题又来了, .toFixed() 会保留足够的小数位,比如:2e-7.toFixed(8) 得到的值是 0.00000020,2e2.toFixed(8)得到的值是 200.00000000。最后的 0 让我感到多余…

    06

    C++cin,cout以及常见函数总结,cin,cout格式化控制

    cin是C++的标准输入流对象,主要用于从标准输入读取数据,无论字符型,浮点型,还是整数形变量,我们只需要cin>>变量名称;即可完成各类数据读取数据。说到这里就不得不提到C语言中的标准输入函数scanf(),对于刚学习C++的萌新,一定会惊艳到相对于scanf函数,cin带来的便捷,scanf每次想要读取数据,必须指定数据类型,这显然显的有些繁琐。那么,为什么单靠一个cin>>变量名称,即可确定数据类型并读取数据,这其中的奥秘被隐藏在这个>>运算符之中,这个运算符叫做流提取符,其实cin>>的原型是cin.operator >>(),这又是一种被称为运算符重载的新技术,我们可以查看cin.operator >>的定义,它存在于istream头文件中,里面为>>符号定义了各种数据的处理方法,给大家看几个:

    06

    字符串排序----高位优先的字符串排序

    上一篇:低位优先的字符串排序 高位优先字符串排序是一种递归算法,它从左到右遍历字符串的字符进行排序。和快速排序一样,高位优先字符串排序算法会将数组切分为能够独立进行排序的子数组进行排序,但它的切分会为每个首字母得到一个子数组,而非像快排那样产生固定的两个或三个数组。 本算法也是基于键索引记数法来实现的。该算法的核心思想是先使用键索引记数法根据首字符划分成不同的子数组,然后递归地处理子数组,用下一个字符作为键索引记数法的键处理子数组。 因为是不同长度的字符串,所以要关注字符串末尾的处理情况。合理的做法是将所有

    01

    萌新不看会后悔的C++基本类型总结(二)

    上一篇大概地说了浮点数的精度问题和有效范围大小,还是有些东西没有说出来,我觉得还是应该说一说,我们常说的单精度有6 ~ 7位的有效范围,而双精度有15 ~ 16位的有效范围,这里所指的有效范围并不是该数值的大小,这是很多初学者的一个误区,并不是说这个单精度的float只能存储6 ~ 7位怎么大的数,如果是1234578这样的数则无法存储,这是错误的,想要理解这里的有效范围,还需要知道浮点数的存储方法,浮点数使用科学记数法来表示存储的,最大可以达到3.4E38,这是一个很大的数,达到了38位之多,显然不是上面所说的6 ~ 7位,这个有效范围可以认为是38位中的前6 ~ 7位,因为是使用科学记数法表示,而6 ~ 7 位又是根据尾数来得出来的,尾数又规定在1到2之间,也就是说最高位必须是1,而后面的数可以是000000(23个0),或者最大值为2,也就是1.1111111(23个1)需要注意这里的尾数使用二进制表示的,而2 ^23在6 ~ 7位之间,尾数可以保存6 ~ 7 位,然后后面38个0,这才是精度的根源。如果看不懂就去百度IEEE754,还是看不懂也没关系,初学者不需要了解怎么多,我只是普及一下。

    02

    Java String.format 方法使用介绍

    String类,在JDK1.5中增加了一个非常有用的静态函数format(String  format, Objece...  argues),可以将各类数据格式化为字符串并输出。其中format参数指定了输出的格式,是最复杂也是最难掌握的一点,而argues则是一系列等待被格式化的对象。该函数对c语言中printf函数的用法进行了一定的模仿,因此有c语言基础的人学起来会轻松许多。下面我们着重讨论一下format 参数的格式及含义。          format参数中可以包含不需要转化的字符串,这些字符串是你写什么,最终就输出什么。同时还包含一些特殊格式的内容,来指定将哪个对象来转换,以及转换成什么形式。这种特殊的格式通通以 %index$ 开头,index从1开始取值,表示将第index个参数拿进来进行格式化。这一点比c语言要强一点, c语言只能按照参数的顺序依次格式化,而java可以选择第n个参数来格式化。由于该函数可以对任意一个对象进行格式化,不同的对象适用的参数也不同,因此我们下面分类来讨论。

    03

    Java语言中:在数据类型的讲解中补充的几个小问题

    ============================================================================= 1:在定义Long或者Float类型变量的时候,要加L或者f。   整数默认是int类型,浮点数默认是double。   byte,short在定义的时候,他们接收的其实是一个int类型的值。   这个是自己做了一个数据检测的,如果不再它们的范围内,就报错。 例如:     byte a = 50;  //其实50是int类型的。     short b = 100;   //其实100是int类型的。 ----------------------------------------------------------------------------- 2:byte值的问题:即默认是有符号的。   byte b1 = 127; //127   byte b2 = (byte)128; //-128   byte b3 = (byte)129; //-127   byte b4 = (byte)130; //-126   ......   byte b4 = (byte)255; //-1   byte b4 = (byte)256; //0   byte b4 = (byte)257; //+1 ---------------------------------------   byte b1 = -128; //-128   byte b2 = (byte)-129; //+127   byte b3 = (byte)-130; //+126   byte b4 = (byte)-131; //+125   ......   byte b4 = (byte)-255; //+1   byte b4 = (byte)-256; //0   byte b4 = (byte)-257; //-1 --------------------------------------- 所以有个规律是:在任何范围内,如果给个较大的值,在截取的时候,当比最大值还大的时候,又会绕回去从最小的开始。 所以有个规律是:在任何范围内,如果给个较小的值,在截取的时候,当比最小值还小的时候,又会绕回去从最大的开始。 ---------------------------------------   byte的范围:-128 ~ 127   128: 1000 0000   -128:1000 0000 (可以这样认为:这里的1即是符号位,也是数值位。)   其实1000 0000表示-0。   其实实际上byte的范围是 -127,-126,-125,...,-1,-0,+0,+1,...,+125,+126,+127   但是呢我们一般认为的是0不分正负的,所以为了区别以及为了超过范围数还能绕回去,叫做数据的回环!,就上面那样做了。 ----------------------------------------------------------------------------- 3:数据类型转换之默认转换:   byte,short,char --> int --> long --> float --> double           默认转换 但是呢?     long: 8个字节     float:4个字节 为什么long会在前面呢? --------------------------------------- 原因是:     A:它们底层的存储结构不同。所有的整数是按照1010...去存储的,但浮点数是按照科学计数法的表示的,所以存储的有效数字位以及次幂。     B:这样就导致了float表示的数据范围比long的范围要远远大。       long:-2^63 ~ 2^63-1       float:3.4*10^38 > 2*10^38 > 2*8^38 = 2*2^3^38 = 2*2^114 >> 2^63-1 --------------------------------------- Java浮点类型常量有两种表示形式:     十进制数形式,     如:3.14         314.0     科学记数法形式, 如:3.14e2    3.14*10^2   Java各整数类型有固定的表数范围和字段长度,其不受具体操作系统的影响,以保证Java程序的可移植性。   所谓的有效数字:具体地说,是指在分析工作中实际能够测量到的数字。所谓能够测量到指的是包括最后一位估计的不确定的数字。

    01
    领券