为什么将浮点数除以整数返回 0.0?

2022-09-01 02:50:32

因此,如果我有一个数字范围'0 - 1024',并且我想将它们带入'0 - 255',数学将指示将输入除以输入的最大值(在本例中为1024),这将给我一个介于0.0 - 1.0之间的数字。然后将其乘以目标范围 (255)。

这就是我想做的!

但是由于某种原因在Java中(使用处理),它将始终返回值0。

代码就这么简单

float scale;
scale = (n/1024) * 255;

但我只是得到0.0。我尝试过双重和int.都无济于事。为什么!?


答案 1

这是因为你正在做整数除法。

除以双精度或浮点数,它将起作用:

double scale = ( n / 1024.0 ) * 255 ;

或者,如果您希望将其作为浮点数,

float scale = ( n / 1024.0f ) * 255 ;

答案 2

n / 1024是整数除法,它产生一个整数(即在本例中为0)。

请改用。n / 1024.0