Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在Xcode控制台中,将两个double分开会产生错误的结果_Ios_Swift_Xcode - Fatal编程技术网

Ios 在Xcode控制台中,将两个double分开会产生错误的结果

Ios 在Xcode控制台中,将两个double分开会产生错误的结果,ios,swift,xcode,Ios,Swift,Xcode,我在Xcode中尝试了一些东西,遇到了无法解释的情况,Xcode给了我一个简单除法的错误结果: let a : Double = 0.235 let b : Double = 0.001 let nrOfDivisions = a / b print("Divisions: ", nrOfDivisions) //prints 234.99999999999997 奇怪的是,如果我从0.230除以。。。从0.234到0.001,我得到了正确的结果,但从0.235开始。。。0.239我得到了错

我在Xcode中尝试了一些东西,遇到了无法解释的情况,Xcode给了我一个简单除法的错误结果:

let a : Double = 0.235
let b : Double = 0.001
let nrOfDivisions = a / b

print("Divisions: ", nrOfDivisions) //prints 234.99999999999997
奇怪的是,如果我从0.230除以。。。从0.234到0.001,我得到了正确的结果,但从0.235开始。。。0.239我得到了错误的结果。 我现在用0.225,0.226,0.227,0.245,0.246,0.247进行了测试,它们都能正确划分


这里可能有什么问题?这是Xcode中的一个bug,还是我遗漏了什么?

这可能是因为这个问题:。你是否认为苹果的浮点运算是错误的?在Java世界中,这些问题经常出现,BigDecimal是解决方案,您可以阅读。

结果有什么问题,这对于浮点类型来说很正常?感谢您的解释。我在某个地方读到过,这种情况发生在浮点数上,而不是双精度,因为浮点数有7个精度小数,而双精度小数有15个精度小数。因此,使浮动不那么精确。另外,在我的观察中,我测试的其他数字没有出现这种情况,只是在我描述的小范围内,尽管我的实验没有包括很多试验。@Starsky这种情况发生在这样或那样的情况下,每种固定精度的数据类型,无论是浮点32位、双64位、浮点80位或更高。这无异于要求计算机:给我一个精确的1/3的十进制表示,只用n个数字。对于任何n<∞, 答案必然也不可避免地是不精确的。例如,如果您只有两位数字可供使用,则最接近的近似值为0.33。但是你偏离了0.003333。。。