博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# 除法的细节
阅读量:5175 次
发布时间:2019-06-13

本文共 752 字,大约阅读时间需要 2 分钟。

最近在做项目时有个地方用到了概率,要计算概率自然会用到除法。我这边概率的算法是这样的,从0到10000获取个随机数,随机值除以10000就是概率了,但是一时大意没注意细节,结果直接除了,如下:
 
Random rdo
=
new
Random();
int
intNum
=
rdo.Next(
0
,
10000
);
float
result
=
intNum
/
10000
;

       如果intNum是845,那么理论上应该得到的是0.0845。可是结果却让我大跌眼镜,不管怎么算,结果都是0.0,如果不管怎么随机的话都是 0.0,那就失去意义了。于是百度去,原来C#的除法的精度是根据被除数来决定的,这里的被除数是intNum,它的数据类型是整形,所以这边除出来的结 果自然就取整了。既然这种方式不通,那就只有换种方式了,总之问题总得解决,于是我改成了下面这写法:      

 
Random rdo
=
new
Random();
float
intNum
=
(
float
)rdo.Next(
0
,
10000
);
float
result
=
intNum
/
10000
;

  Ok,如愿以偿,得到了我想要的答案,比如intNum是845,那么得到的结果是0.0845.C#中解决了这个问题,于是我想到了SqlServer中会不会也有这种情况,于是我试了试,如下:

 
select
845
/
10000

  查询结果等于0,看来SQL和C#是一样的,于是我也换了种写法,如下:

 
select
CONVERT
(
float
,
845
)
/
10000

查询结果等于0.0845,正确。 

转载于:https://www.cnblogs.com/davytitan/p/4181773.html

你可能感兴趣的文章
特定字符序列的判断(1028)
查看>>
华为面试
查看>>
平衡二叉树(AVL Tree)
查看>>
【BZOJ3295】[Cqoi2011]动态逆序对 cdq分治
查看>>
【CF799E】Aquarium decoration 线段树
查看>>
大运飞天 鲲鹏展翅
查看>>
从ECMA到W3C
查看>>
软件工程--第十六周学习进度
查看>>
yii2 ActiveRecord多表关联以及多表关联搜索的实现
查看>>
搜狗输入法安装--ubuntu
查看>>
ps/2接口键盘的输入及显示
查看>>
Swift———a Glance(极客学院)笔记
查看>>
【poj3294-不小于k个字符串中最长公共子串】后缀数组
查看>>
java如何获取其它用户登录的真是IP地址
查看>>
Jquery通过指定层次关系获取元素
查看>>
c# for 和 foreach 的区别
查看>>
docfx (一)
查看>>
HashMap底层实现原理/HashMap与HashTable区别/HashMap与HashSet区别
查看>>
深度学习之前馈神经网络(前向传播和误差反向传播)
查看>>
IEnumerable<T>和IQueryable<T>区别
查看>>