swift 四舍六入五成双 随机

杨杨1234 2017-03-02 04:56:47
let s = Common.doubleToString(sum/Double(count), point: 3)
var a = sum/Double(count)
print(sum) //50.49
print(Double( count)) //4.0
print(a) //12.6225
print(Common.doubleToString(12.6225, point: 3)) //12.623
print(s) //12.622 //12.623 这两个 值居然随机出现了,诡异不?
class func doubleToString(value:Double,point:Int)->String{
return NSString(format: "%.\(point)f", value) as String
}

print(s) 得到的值居然是随机的,完全蒙了,请问有没有懂的同学给解释解释,同时该怎么避免呢?
根据 四舍六入五成双的原则,直接传递12.6225,返回12.623是正确的,但是为什么s是随机的呢?
ps: let b = sum/Double(c) Common.doubleToString(b, point: 3) 得到的值也是随机的出现
let c = 12.6225 Common.doubleToString(c, point: 3) 得到的值是12.623
所有我认为是不是sum 或者 count的保留位数对答案有影响,麻烦懂得同学指教,不胜感激!!!
...全文
231 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
杨杨1234 2017-03-14
  • 打赏
  • 举报
回复
好吧我自己都复现不了了,等我复现了研究完发个完整版的帖子出来。
杨杨1234 2017-03-06
  • 打赏
  • 举报
回复
你不断刷新试试看???
scribbler 2017-03-03
  • 打赏
  • 举报
回复
如果要解释这个问题,就需要了解浮点数的表示和范围 你可以看看这个博客 http://blog.csdn.net/hyforthy/article/details/19649969
scribbler 2017-03-03
  • 打赏
  • 举报
回复
用你代码运行了下,没法重现你的问题 sum: 50.49 ,count: 4.0 12.6225 12.623 12.623

29,027

社区成员

发帖
与我相关
我的任务
社区描述
主要讨论与iOS相关的软件和技术
社区管理员
  • iOS
  • 大熊猫侯佩
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧