浮点数怎么表示精确度?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浮点数怎么表示精确度?相关的知识,希望对你有一定的参考价值。

参考技术A

printf("%7.3f",100/3.0);表示结果占七位,小数部分占3位,这样就可以了,并且小数点后第三位是四舍五入的结果。

例如:

C语言中浮点数输出精确到两位小数的语句如下:

double a=2.0;printf ("%.2f", a);//其中.2指明两位小数

说明:如%9.2f

表示输出场宽为9的浮点数, 其中小数位为2, 整数位为6,如果9缺省则场宽为该数实际位数

规定符

%d 十进制有符号整数

%x, %X 无符号以十六进制表示的整数

%o 无符号以八进制表示的整数

%g 把输出的值按照%e或者%f类型中输出长度较小的方式输出

%p 输出地址符

%lu 32位无符号整数

%llu 64位无符号整数

扩展资料:

如果是实数的话,就不是这样了,机器有两种办法表示实数,一种是定点,就是小数点位置是固定的,一种是浮点,就是小数点位置不固定,计算方法也比较麻烦,通常会比整数运算代价大很多。

FPU->Floating Point Unit,浮点运算部件。

BCD->Binary Coded Decimal 压缩的二进制数,是用4个位来表示数字0~9,一个byte表示两个十进制数,比如正常二进制数1001111表示79,而BCD中用 0111 1001 来表示79。

科学计数法:a×10的n次幂的形式。将一个数字表示成 (a×10的n次幂的形式),其中1≤|a|<10,n表示整数,这种记数方法叫科学记数法。

参考资料来源:百度百科-浮点运算

JS浮点数相减出现异常数

今天小编出现一种情况在js中用0.3-0.2得出来的却不是0.1而是0.09999999999999999999998,很是纳闷,查看了很多资料才发现原来是如下原因导致的:


"浮点数”不是“实数”,浮点数有最大表示范围,在表示范围内用最接近实数的浮点数可以表示数来表示,比如 

0.1是实数,意味着0.10000000…… 都是0.1,而double无法精确表示0.1,但它能精确表示 +0.1000000000000000055511151231257827021181583404541015625 ,所以它用 +0.1000000000000000055511151231257827021181583404541015625 来表示 0.1,同样: 
0.1 <--> 0.1000000000000000055511151231257827021181583404541015625 
0.2 <--> 0.200000000000000011102230246251565404236316680908203125 
0.3 <--> 0.299999999999999988897769753748434595763683319091796875

当你用浮点数来计算时,结果也是浮点数.计算机无法精确表示的,于是它用最接近的值来表示


本文出自 “HTMLDOM” 博客,请务必保留此出处http://sucheng.blog.51cto.com/6511117/1844688

以上是关于浮点数怎么表示精确度?的主要内容,如果未能解决你的问题,请参考以下文章

浮点数的十六进制表示

C++浮点数误差是啥

VB单精度、双精度浮点数误差,如何消除

浮点数精确表示

Java之浮点数运算

浮点数中单精度和双精度的编码表示