c# - 无法将值存储在变量中
问题描述
我想从数据库中找到两个值的百分比。当我执行计算时,变量不存储结果。有人请告诉我为什么会这样。
private int GetPercentage(int re, int al)
{
float k;
if (al > 0)
{
k = (float) (re / al) * 100;
}
else
{
k = 100;
}
if (k < 10)
{
float p = 100 - k;
Label3.Visible = true;
Label3.Text = "Customer has used more than " + p + "% of Allotted LPOs";
}
int l = 100 - (int)k;
return l;
}
解决方案
你再一次被整数语义弄糊涂了。从数学中我们知道 1 / 3 是 0.33333333...但是这不适用于编程,其中一个整数(1 和 3 是什么)除以另一个整数总是会产生另一个整数,因此浮点数总是乘以另一个整数结果是一个float
。
因此以下返回零:
1 / 3
因此,您必须告诉编译器您想要浮点算术,这可以通过将运算符之一转换为float
或使用浮点文字来实现。以下表达式返回正确的浮点数:
1f / 3
或者,您也可以写1.0 / 3
or1 / 3f
或1 / 3.0
。
因此,您在代码中需要的是:
private int GetPercentage(int re, int al)
{
float k;
if (al > 0)
{
k = ((float) re / al) * 100; // see here, you need to cast to float
}
else
{
k = 100;
}
if (k < 10)
{
float p = 100 - k;
Label3.Visible = true;
Label3.Text = "Customer has used more than " + p + "% of Allotted LPOs";
}
int l = 100 - (int)k;
return l;
}
推荐阅读
- cygwin - 编译后从 Cygwin 环境中删除数据库
- android - Nativescript : 使用 Base64 字符串显示图像
- docker - 是否可以将 docker 端口绑定到专用 IP 地址
- java - 模拟一个spring bean及其内部依赖项
- c# - 到 HBase kerberized 集群的 C# 连接字符串
- sql-server - 将声明的类型表变量插入另一个表?
- batch-file - 在不同的服务器上运行批处理
- sql - 仅按两个不同列中的一个排序
- python - 将带有外键的 CSV 文件上传到 Django
- reactjs - 反应,更新由对象数组组成的状态中的单个值