BntK_ij
2015-08-20 12:10
采纳率: 100%
浏览 3.0k

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 2015-08-21 01:23
    已采纳

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

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • threenewbee 2015-08-20 12:21

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

    评论
    解决 无用
    打赏 举报
  • panliuwen 2015-08-20 14:37

    坐标不是int的吗?

    评论
    解决 无用
    打赏 举报
  • 丵鹰 2015-08-20 14:51

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

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题