BntK_ij
BntK_ij
采纳率100%
2015-08-20 12:10 阅读 2.9k

C# wpf 生成整数随机数

小弟本想随机生成椭圆elli,使它在Canvas中的坐标为2的倍数.

 Canvas.SetLeft(elli, Math.Round((double)random.Next((int)canvas.Width / 2)) * 2);
 Canvas.SetTop(elli, Math.Round((double)random.Next((int)canvas.Height / 2)) * 2);

然后判断elli的坐标与另一个坐标是否相等,但结果总为false.后来检查发现elli的坐标竟为{x=20, y=39.999994}之类的值.请问有什么办法产生完美的随机整数呢?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

4条回答 默认 最新

  • 已采纳
    BntK_ij BntK_ij 2015-08-21 01:23

    问题找到了:
    random本来已经产生了一个整数,但把它赋给Canvas.Left这个double类型的属性时产生了微小的不可避免的误差.
    可以在判断相等时使用ToString方法忽略误差,或改用<= >=在误差允许范围内判断是否相等.

    点赞 评论 复制链接分享
  • caozhy 从今以后生命中的每一秒都属于我爱的人 2015-08-20 12:21

    (int)(random.Next() * canvas.Width / 2.0 + 0.5)

    点赞 评论 复制链接分享
  • panliuwen panliuwen 2015-08-20 14:37

    坐标不是int的吗?

    点赞 评论 复制链接分享
  • strutce 丵鹰 2015-08-20 14:51

    (int)Math.Round((double)random.Next((int)canvas.Width / 2)) * 2

    点赞 评论 复制链接分享

相关推荐