|
|
1
434
巨大的差异。
顾名思义,
以下是计算位数的方法:
这种精度损失可能导致截断错误更容易上浮,例如
虽然
另外,浮动的最大值大约是
在测试过程中,可能有一些测试用例包含这些巨大的数字,如果使用float,可能会导致程序失败。
当然,有时,甚至
此外,不要使用
〔1〕:C和C++标准没有指定
|
|
|
2
51
以下是标准C99(ISO-IEC 9899,2.2.5×10)或C++ 2003(ISO-IEC 1488—2003—3.1.9×8)标准:
C++标准增加了:
我建议你看看 What Every Computer Scientist Should Know About Floating-Point Arithmetic 它深入介绍了IEEE浮点标准。您将了解表示细节,并认识到大小和精度之间存在权衡。浮点数表示的精度随着大小的减小而增加,因此-1和1之间的浮点数是精度最高的浮点数。 |
|
|
3
26
给出二次方程: X 二 -4.0000000美元 X +3.999999=0,10个有效数字的确切根是, R 一 =2.000316228和 R 二 =1.999683772。
使用
运行这个程序给了我:
请注意,这些数字并不大,但您仍然可以使用
(事实上,上述方法不是使用单精度或双精度浮点数求解二次方程的最佳方法,但即使使用 more stable method ) |
|
|
4
19
|
|
|
5
11
浮点数计算中涉及的数字大小不是最相关的。正在执行的计算是相关的。 实际上,如果您正在执行一个计算,结果是一个无理数或循环小数,那么当该数被压缩到您所使用的有限大小的数据结构中时,就会出现舍入错误。因为double的大小是float的两倍,所以舍入误差会小很多。 测试可能特别使用会导致此类错误的数字,因此测试您是否在代码中使用了适当的类型。 |
|
|
6
8
浮点数的精度比双精度小。尽管你已经知道了,读 What WE Should Know About Floating-Point Arithmetic 为了更好的理解。 |
|
7
8
类型float,32位长,精度为7位。虽然它可以存储范围非常大或非常小的值(+/-3.4*10^38或*10^-38),但它只有7个有效数字。 类型double,64位长,具有更大的范围(*10^+/-308)和15位精度。 类型long double名义上是80位,但是给定的编译器/OS对可能会将其存储为12-16字节,以便于对齐。长双精度数的指数非常大,应该有19位数的精度。微软以其无穷的智慧,将长双字节限制为8字节,与普通双字节相同。 一般来说,只需在需要浮点值/变量时使用类型double。默认情况下,表达式中使用的文本浮点值将被视为双精度浮点值,并且大多数返回浮点值的数学函数都返回双精度浮点值。如果你只使用double,你会省去很多头痛和打字。 |
|
|
8
7
我刚刚遇到了一个错误,我花了很长时间才弄明白,可能会给你一个很好的浮动精度的例子。
输出为
正如您在0.83之后看到的,精度显著下降。
但是,如果我设置
我花了五个小时才意识到这个小错误,它毁了我的程序。 |
|
|
9
3
当使用浮点数时,您不能相信您的本地测试将与在服务器端完成的测试完全相同。在本地系统和运行最终测试的地方,环境和编译器可能是不同的。我以前在一些Topcoder竞赛中见过很多次这个问题,特别是当你试图比较两个浮点数字时。 |
|
|
10
2
内置比较操作的不同之处在于,当您将两个数字与浮点进行比较时,数据类型(即float或double)的差异可能会导致不同的结果。 |
|
|
11
0
float和double的区别在于double比float变量具有更高的精度值。
当您将变量声明为float时,它只允许在输入小数点后6位小数。
也就是说,对于一个浮点变量
即使您存储的值在小数点后超过六位,它也不会存储整个数字,而是只存储到小数点后的前六位。
此外,如果尝试在该变量的小数点后存储超过7位,则会出现错误。在这种情况下,您需要如下初始化它-
如果是双精度,它将在小数点后最多存储15位数字。
前任:
|
|
|
12
-1
不同于
|
|
AstralHex · 矩阵乘法代码工作不正常 1 年前 |
|
|
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 1 年前 |
|
|
Die4Toast · 递归调用成员箭头运算符-> 1 年前 |
|
|
Anka Hanım · 关于结构和动态数组地址的问题 1 年前 |