有个函数如下 
private float getFFF(int x, float y, boolean mI,boolean nI) { 
yj = y * x * 0.0022; 
if (yj < 5.0f) {yj = 5.0f;} if (nI) {ghf = (float) Math.ceil((double) x / 1000);} 
            else {ghf = 0;} if (mI == false) {yhs = y * x * 0.001} 
            else {yhs = 0;} total = yj + ghf + yhs; 
return total; 

现有方程式 
    0= flMo * 100 - 18 * 100- getFFF(100, 18, true, true)- getFFF(100, flMo, false, true); 请问如何求得flMo,即如何得出flMo=?

解决方案 »

  1.   

    答:你把getFFF(100, flMo, false, true)代入,就可化简成关于flMo的一次代数式,然后这个式子放在:
     0= flMo * 100 - 18 * 100- getFFF(100, 18, true, true)- flMo的一次代数式,就得到关于flMo的式子了,然后用JAVA程序来计算值就行了。
      

  2.   

    答:参考代码:
    public class Cal { private static float getFFF(int x, float y, boolean mI,boolean nI) { 
    float yj = y * x * 0.0022f; 
    float ghf=0.0f,yhs=0.0f,total=0.0f;
    if (yj < 5.0f) {yj = 5.0f;}  if (nI) {ghf = (float) Math.ceil((double) x / 1000);} 
                else {ghf = 0;}  if (mI == false) {yhs = y * x * 0.001f;} 
                else {yhs = 0;}  total = yj + ghf + yhs; 
    return total; 

    public static void main(String[] args) {
    // TODO 自动生成方法存根
         float flMo=0.0f;
         flMo=(getFFF(100,18,true,true)+18*100+5.0f+(float) Math.ceil((double) 100 / 1000))/(100-100*0.001f);
         System.out.println("flMo的值:"+flMo+"\nflMo * 100 * 0.0022f的值(是不是小于5.0f):  "+(flMo * 100 * 0.0022f));
         System.out.println( "将flMo值代入原式后计算的值(与0相比较):"+(flMo * 100 - 18 * 100- getFFF(100, 18, true, true)- getFFF(100, flMo, false, true)));

    }}
    程序运行结果:
    flMo的值:18.138138
    flMo * 100 * 0.0022f的值(是不是小于5.0f):  3.99039
    将flMo值代入原式后计算的值(与0相比较):-9.2983246E-5
      

  3.   

    这就是一个代值求解的过程。先看getFFF(100, flMo, false, true),这个方法里flMo是变量,不要紧,yj = y * x * 0.0022这句执行完了之后,也就是yj = 100*flMo*0.0022 = 0.22*flMo,下面判断yj于5.0f的大小关系,不要紧,不就是分段函数吗?你先假如yj是>=5.0f的,然后yj不变,执行后面的操作;然后得出flMo的结果,再回来验证一下是不是yj>=5.0f,如果不是,那么假设错误;yj<5.0f的情况是一样的。就是一个假设,然后在回来验证的过程。
      

  4.   

    /*
     * 有个函数如下 
    private float getFFF(int x, float y, boolean mI,boolean nI) { 
    yj = y * x * 0.0022; 
    if (yj < 5.0f) {yj = 5.0f;} if (nI) {ghf = (float) Math.ceil((double) x / 1000);} 
                else {ghf = 0;} if (mI == false) {yhs = y * x * 0.001} 
                else {yhs = 0;} total = yj + ghf + yhs; 
    return total; 

    现有方程式 
        0= flMo * 100 - 18 * 100- getFFF(100, 18, true, true)- getFFF(100, flMo, false, true);  */
    public class Result {
    private static float getFFF(int x, float y, boolean mI,boolean nI) { 
    float yj = y * x * 0.0022f; 
    float ghf, yhs;

    if (yj < 5.0f) 
    yj = 5.0f; if (nI) 
    ghf = (float) Math.ceil((double) x / 1000);
    else 
    ghf = 0; if (mI)
    yhs = y * x * 0.001f;
    else 
    yhs = 0;  float total = yj + ghf + yhs; 

    return total; 


    public static void main(String args[]){
    float temp = getFFF(100, 18, true, true);

    float flMo;

    //先假定yj<5.0f,也就是flMo < 5f/0.22f, 那我就可以假设flMo = 0;
    flMo = 0f;

    float temp1 = getFFF(100, flMo, false, true);

    flMo = (18*100 + temp + temp1)/100;

    if (flMo < 5f/0.22f)
    System.out.println(flMo);
    else{
    //假设flMo = 30
    flMo = 30f;

    temp1 = getFFF(100, flMo, false, true);

    flMo = (18*100 + temp + temp1)/100;

    if (flMo >= 5f/0.22f)
    System.out.println(flMo);
    }
    }
    }结果:
    18.138