计算期间Java潜在的Bodmas问题

时间:2015-02-21 12:40:46

标签: java math logic

我将这两个值传递给我的函数......

    float c = -80f;
    float m = 1.66f;

该函数接受两个用于图像对比度增强的浮点数,但是在if结构期间,程序总是进入if else块,这是不正确的。因此,数组中的每个值都被分配255,这是不正确的,任何人都可以确定为什么会这样吗?

//look up table for linear stretching
public short[] linearStretchLut(float m,float c)
{
    short Lut[] = new short[256];

    for(int i =0; i<Lut.length;i++){            
        if(i < -c/m){
            Lut[i] = 0;
        } else if(i > (255 - c) / m) {
            Lut[i] = 255;
        } else {
            Lut[i] = (short) (m*i+c);
        }
        System.out.println(i + " " + Lut[i]);
    }
    return Lut;
}   

一个应该使条件错误的例子......

I = 10 10> (255-c)/ m      (最终值应为201.8) 所以这应该是一个错误的评估,程序不会复制这种行为。

2 个答案:

答案 0 :(得分:1)

问题原来是这个......

我是以错误的顺序将变量m和c传递给函数,所以问题出在我自己的问题上:)

答案 1 :(得分:0)

我创建了以下测试程序,看起来你只是以错误的顺序传递值:

package test;

public class Test {

    //look up table for linear stretching
    public static short[] linearStretchLut(float m,float c)
    {
        short Lut[] = new short[256];

        for(int i =0; i<Lut.length;i++){ 
            float f1 = -c/m;
            float f2 = (float) (255 - c) / m;
            if(i < f1){
                Lut[i] = 0;
            } else if(i > f2) {
                Lut[i] = 255;
            } else {
                Lut[i] = (short) (m*i+c);
            }
            System.out.println("-c/m = " + f1 + " / " + " (255 - c) / m = " + f2 + "/ i = " +  i + " / Lut[i] = " + Lut[i]);
        }
        return Lut;
    } 

    public static void main(String[] args)
    {
        float c = -80f;
        float m = 1.66f;
        short Lut[] = Test.linearStretchLut(m,c);
    }
}