cwe - 1339:精度不足或精度实数
视图定制的信息:
当一个安全监察决定或者计算需要高度精确,精确的数字,如金融计算或价格,然后小数量的变化可以被攻击者利用。 有多种方法来存储一个实数的小数部分电脑。在所有这些情况下,是有限度的记录分数的准确性。如果分数可以表示为一个固定数量的数字(二进制和十进制),可能没有足够的数字分配给代表数量。在其他情况下不能代表人数固定数量的数字由于十进制的重复或二进制符号(例如0.333333…)或由于超越数如Π或√2。四舍五入的数字可能会导致计算机的情况下结果不充分匹配的结果足够精确的数学。 ![]() ![]()
![]() ![]()
![]()
![]() 语言 类:不是特定于语言的患病率(待定) 操作系统 类:不使用患病率(待定) 体系结构 类:不是特定于体系结构的患病率(待定) 技术 类:不是特定于技术的患病率(待定) ![]()
示例1 穆勒的复发是一个系列,应该收敛于5号。与下面的代码在运行本系列,不同的实现在特定迭代:实数的失败
(坏的代码)
例如语言:生锈
fn rec_float (y: f64 z: f64) - > f64
{
(108.0)- (815.0 - 1500.0 / z / y); }fn float_calc(转:usize) - > f64 {
让狗x: Vec Vec ! < f64 > = (4.0, 4.25); }(2 . .把+ 1).for_each(| |数量 {
x。推(rec_float (x(数- 1)x(数量- 2))); });x(转) 下面的图表显示了不同的数据值结构锈语言当穆勒的递归执行80次迭代。数据结构f64 64位浮点数。数据结构我<数字> F <数字>是固定使用第一个数字表示128位长整数的大小和第二大小比例的大小(例如I16F112使用16位整数和分数的112位)。比率的数据结构在三个不同的实现:手机等使用32位有符号整数比,i64使用一个64位有符号整数比和长整型数字使用一个带符号整数的比例高达2 ^ 32位数256基地。注意即使有112位64位无符号整数的分数或比率,这个数学仍然不收敛的期望值5。
(好的代码)
例如语言:生锈
使用num_rational:: BigRational;
fn rec_big (y: BigRational z: BigRational) - > BigRational {
BigRational:: from_integer (BigInt::从(108)) }
- ((BigRational:: from_integer (BigInt::从(815))
——BigRational:: from_integer (BigInt::从(1500))/ z) / y) fn big_calc(转:usize) - > BigRational {
让狗x: Vec Vec ! < BigRational > = [BigRational: from_float (4.0) .unwrap (), BigRational:: from_float (4.25) .unwrap ()); }(2 . .把+ 1).for_each(| |数量 {
x。推(rec_big (x(数- 1).clone (), x[数量- 2].clone ())); });x[转].clone () 示例2 1991年2月25日,在入侵伊拉克前夕的沙特阿拉伯,伊拉克飞毛腿导弹发射的位置打了一个我们在达兰军营,沙特阿拉伯。错误时候,造成28人死亡ref - 1190]。
示例3 斯莱普,一个海上钻井平台在北海,是错误地低估了50%力量的浮力细胞所需的关键集群建设。这导致泄漏在浮力细胞降低,导致里氏3.0级地震,约700美元损失(ref - 1281]。
更多的信息是可用的,请选择一个不同的过滤器。
|
使用常见的弱点枚举(CWE)和相关的引用从这个网站的使用条款。CWE赞助的美国国土安全部(DHS)网络和基础设施安全机构(CISA)和管理的国土安全系统工程和发展研究所这是由(HSSEDI)manbetx客户端首页(斜方)。版权©2006 - 2023,斜方公司。manbetx客户端首页CWE、水煤浆、CWRAF, CWE标志是斜方公司的商标。manbetx客户端首页 |