如何在Java中求解数学表达式?

如何在Java中求解数学表达式?,java,Java,我试图获取百分比,但结果是错误的,我的表达式为: Uper=(Upcount/total)*100; 当Uper是浮点,而Upcount和total是整数时,我得到的结果是Uper=0在您的情况下,2个整数的除法将始终得到一个0的整数 要解决此问题,请使用以下代码: Uper = ((Double) Upcount) / total * 100 将至少1个成员强制转换为Double或Float将得到您想要的结果一个int除以一个int将得到一个int。这可能是0。相乘0*100,转换为flo

我试图获取百分比,但结果是错误的,我的表达式为:

Uper=(Upcount/total)*100;

Uper
是浮点,而
Upcount
total
是整数时,我得到的结果是
Uper=0
在您的情况下,2个整数的除法将始终得到一个0的整数

要解决此问题,请使用以下代码:

Uper = ((Double) Upcount) / total * 100

将至少1个成员强制转换为Double或Float将得到您想要的结果一个
int
除以一个
int
将得到一个
int
。这可能是
0
。相乘
0*100
,转换为
float
,结果仍然是
0.0
。在除法给出浮点结果之前,至少需要一个操作数为浮点

尝试:

额外的
(float)
让我妄想这行将来可能会在不完全理解浮点要求的情况下被修改。
100.0
将明确说明所需的内容——浮点结果


也许将
Upcount
total
更改为
float
会更有意义。

代码中没有任何错误,我刚刚得到的是“0”值??看,你能提到变量的值吗???如果
Upcount
total
都是
int
你将得到整数除法,可能是0。最好使Uper加倍并执行
(Upcount*100.0)/total
。命名约定为uper和upcount。您找到合适的答案了吗?如果数学运算中至少有一个成员是浮点/双精度,那么结果将始终是浮点/双精度。不需要pe paranoid和添加3个石膏,当你只能使用1个石膏时,只有两个石膏。是的,读起来有点嘈杂,但根据我的经验,代码经常会随着时间的推移而改变,有时使用暴力搜索和替换机制,后来有人来修复编译错误,而不一定理解以某种方式编写代码的原因。写对你来说最有意义的东西——因为我写这段代码的方式,我认为这是未来十年维护程序员生存的最好机会。你对每个人的写作方式都是正确的,但在我们这里的问题上,它与编程语言无关,它是计算机的基本概念,因为整数和浮点值之间的除法不同。因此,自动化部分不是必需的,而是机器本身为了计算而需要的
Uper = ((float)Upcount/(float)total)*100.0;