根据以下网站:精确度与精确度。精度=规格的紧密性。准确性=正确性。不要混淆精确度和精确度。http://introcs.cs.princeton.edu/java/91float/
有没有人能给出一个定义,然后解释一下与java浮点数相关的is精度和准确性之间的区别?
发布于 2017-01-22 16:05:39
精度是您指定的位数,而精度则指定与真实结果的差值。
举个例子:
3.14的精度低于3.149,但如果它被认为是pi的值,则精度更高。
一个Java float的精度大约是6-7位十进制数字。这取决于输入的准确性和算法的数值稳定性,得到的结果有多准确。
发布于 2017-01-22 16:29:13
如果您通读IEEE 754的文档,它描述了关于单精度和双精度类型。它说“几乎所有的硬件和编程语言都使用相同的二进制格式的浮点数”。
通常的格式总长度为32位或64位:
格式:单精度
总位数: 32
有效位: 23 +1符号
指数位:8
最小数:约1.2⋅10(幂)-38
最大数:约3.4⋅10(幂)38
格式:双精度
总位数: 64
有效位: 52 +1符号
指数位: 11
最小数:约5.0⋅10(幂)-324
最大数:约5.0⋅10(幂)-324
Java遵循关键字支持的单精度和双精度类型。
float f = 0.1f; // 32 bit float, note f suffix
double d = 0.1d; // 64 bit float, suffix optional如果在类、接口、方法上使用strictfp关键字,它将强制所有中间结果遵循IEEE754值,并保证在所有平台上都有相同的结果(准确性)。如果没有strictfp关键字,实现可以在可用的情况下使用扩展的指数范围,从而在许多通用CPU上产生更精确的结果和更快的执行速度。
因此,作为用户/程序员,可以指定精度(四舍五入值)。
示例:
String.format("%.2f", 3.2399) // returns "3.24"
String.format("%.3f", 3.2399) // returns "3.240"精度是定义计算或规范符合正确值或标准的程度的东西。
有关更多详细信息,请查看Java SE Specifications
https://stackoverflow.com/questions/41788581
复制相似问题