我正在开发一个应用程序,它需要使用给定数字的比率并乘以该比率乘以另一个数字。问题是我不能得到少于1的数字给我适当的小数比,而是它给我零(当它应该是.5)。
示例:
float number = 1/2; // This gives me zero
double number = 1/2; // This also gives me zero
答案 0 :(得分:6)
如果未指定小数位,则使用整数,这意味着在将结果强制转换为LHS上的类型之前,将使用整数精度执行计算。在代码中使用硬编码时,您希望执行以下操作:
float number = 1.0f / 2.0f;
double number = 1.0 / 2.0;
如果您的目标是使用整数变量进行操作,则需要将它们转换为结果所需的类型。
答案 1 :(得分:4)
试试这个
float number = 1.0/2.0;
请注意,1
是int
,因此您实际上正在使用
(int)1 / (int)2
返回
(int)0
要投射int
s的变量,请执行
float number = (float)numerator / (float)denominator;