如何在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;