问个简单的数学问题 - swift

为什么不等于0啊
我看半天没看出问题

图片描述

//: Playground - noun: a place where people can play

import UIKit

func radToDeg(rad: Double) -> Double {
    return (M_PI * rad) / 180
}

var resp: Double = (tan(radToDeg(rad: 30)) * 12.99) * 2

14.99955999354647 - resp


var resp_o: Double = 14.99955999354647

14.99955999354647 - resp_o
阅读 3.3k
4 个回答

计算机内的浮点数会有精度问题,所以一般判断相等会取|a - b| < epsilon,epsilon取10^-6左右。浮点数存储可参考IEEE 754。在计算机组成原理中,有讲到过浮点数加减、上溢、下溢问题。

这个应该和 double 在计算机内的存储方式有关

右侧显示的,并不一定是和内存中完全一样的值…… 如果小数点后面有200位它难道也要显示 200 位么?

你应该去了解一下,计算机是怎么表示浮点数。然后就什么都明白了,所有的语言都会遇到类似的问题。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进