c - value 当答案不应该是 0 时总是返回 0

尝试使用此代码返回通常应返回 20 到 30 作为 s 的 value

int s = sentences / wordcount * 100;

sentenceswordcount 都以 values 的形式出现,它们都不应该是 0。它们的结果会很小(0.20 到 0.30),所以认为这可能与此有关吗?

回答1

尝试将除法明确地转换为浮点(FP)value,这应该可以防止结果

sentences / wordcount

从被击倒到零。您应该只需要将一个转换为 FP value。尝试

int s = (double) sentences / wordcount * 100

回答2

我的猜测是 sentenceswordcountints。结果,您有整数除法,在乘以 100 之前四舍五入为整数。请注意,整数除法不是可交换的。

一个简单的解决方法是在除以字数之前将乘法乘以 100。

int s = sentences * 100 / wordcount;

虽然更好的解决方案是使用 floatdouble

float s = (float)sentence / wordcount * 100;

相似文章

go - Go DNS 问题 TCP 使用 UDP 传输正常

我已经尝试了我能想到的一切,但我正在碰壁。我想知道是否有人能够指出我正确的方向或可能发现问题?我有一个go来编写我自己的DNS服务器有几个原因,主要是学习经验。有几点要提:我正在使用Go使用"gopa...

list - 如何优化以下功能

我在使用以下功能时遇到瓶颈问题。处理lists的list花费的时间太长。我将要详细介绍的list有数百万个lists(最多可以容纳近40M个lists)。该函数遍历lists的list并且对于其第10...

随机推荐

最新文章