精度不够,我这个代码在VBA下可以得到0.5
Dim pi As Double
pi = 3.14159265358979
MsgBox Sin(pi / 6)
实际上编程的时候,碰到有小数的场合,都应该考虑精度问题,一般不能用
if a = b then
这样的方法来判断是否相等.应该设置一个许可误差,判断一个值是否在许可误差内,或者不需要精确值时,用
if a=b
这样的方式来判断.
这是硬件决定的,因为小数的长度可能是无限的,电脑不可能储存无限的数,所以总是会舍弃小数.如果要求高,就用double类型,否则用single类型,保证精度.楼主这个问题可以计算出0.5,只能说是幸运,最好还是要假设他就是0.5左右.或者考虑用四舍五入,比如保留两位小数,那绝对能得到0.5了.