c# - c#整数运算导致CA2233溢出警告
问题描述
我有以下代码触发 CA2233 警告“更正方法 Foo 中操作 'latitudeBam*90' 中的潜在溢出”
double Foo(int latitudeBam)
{
var latitudeInDegrees = (latitudeBam * 90) / (double)int.MaxValue;
return latitudeInDegrees;
}
我不确定警告在哪里。是因为 latitudeBam 可能是接近 int.MaxValue 的值,因此溢出 int.MaxVlaue,还是因为与从 int.MaxValue 到 dobule 的转换有关?
解决方案
您的第一个理论是正确的:您的计算可能会溢出int.MaxValue
,因为它将任何当前的 int 值乘以 90。实际上,在调用您的方法时latitudeBam
可能已经相等。int.MaxValue
推荐阅读
- git - .git 文件夹会使用命令 git init 显示
- android - Android Material Stepper 在导航回视图后显示空视图
- ruby - nil.to_s 产生一个冻结的字符串?
- leaflet - vue3 App中如何使用vue2-leaflet,需要做哪些改动?
- r - 有没有办法使用 R Plumber 在 API 中添加可选参数?
- python - 如何在 Python 中使用 for 循环修改列表项值?
- python - TypeError: int() 参数必须是字符串、类似字节的对象或数字,而不是“方法”
- mpi - mpi_alltoall 在不相等数量的网格和进程上
- javascript - 我从 grafana 日志面板数据源插件的 datasource.js 的查询功能返回什么?
- python - Django - 根据权限提交任何表单字段