贺显伟 2014-08-20 17:16 采纳率: 0%
浏览 241
已采纳

我有这样一个关于swing有趣的需求,不知道哪位大牛能帮解决一下,小弟万分崇拜+不胜感激!

需求:用socket 网络编程,从输入框(也就是图中的2)中输入10/3,机器检测到会产生2位以上的小数时,就会询问要保留几位小数,客户端在输入框再输入“3位”,机器就会按照该要求输出结果,只用考虑做一种情况,不用考虑扩展,界面代码我已经贴上面了,部分路径什么的可能要很简单的修改一下,这个需求说难不难,说简单不简单,小弟才疏学浅,还请大神们不吝赐教啊,如果觉得懒得写,大家可以直接在楼下讨论,小弟3个小时内秒回大笑



 

  • 写回答

1条回答 默认 最新

  • iteye_3681 2014-08-21 09:43
    关注

    我不想下你的代码去看,如果你能看懂下面的代码,你集成起来绝对不是问题。
    PS:下面有几个地方需要你稍微注意一下,自己看...
    [code="java"]
    public class DoubleFormat {

    /**
     * @param args
     */
    public static void main(String[] args) {
        //double doubleValue = 10/3;     //int整形计算结果是3.0
        //double doubleValue1 = 10/3.0;  //double浮点数计算结果是3.3333333333333335(16位小数)
        //System.out.println("计算后浮点数的值:"+doubleValue1);
        //String stringValue1 = String.valueOf(doubleValue1);
        //System.out.println("转化为字符串的值:"+stringValue1);
        double dividend = 10;
        double divisor = 3.0;
        int decimal = 2;
        boolean isNeedAll = true;
    
        System.out.println("被除数:"+dividend +", 除数:"+divisor+",保留小数位:"+decimal);
        System.out.println("计算完转化为字符串的值:"+calcWithFormat(dividend, divisor, decimal, isNeedAll));
    }
    
    /**
     * 带格式化的计算结果输出
     * @param dividend 被除数
     * @param divisor    除数
     * @param decimal  保留的小数位数 
     * @param isNeedAll  是否所有的计算结果都进行格式化
     * @return
     */
    public static String calcWithFormat(double dividend, double divisor, int decimal, boolean isNeedAll){
        String result = null;
        final double EPSINON = 0.000001;
        if((divisor >= -EPSINON)  &&  (divisor <= EPSINON)){
            return "除数不能为0"; 
        }
    
        double doubleValue = dividend/divisor; 
        String stringValue = String.valueOf(doubleValue);
        java.text.DecimalFormat df = new java.text.DecimalFormat("#.00");  
    
        if(isNeedAll){
            result = df.format(doubleValue);
        }else{
            if(stringValue.contains(".") && stringValue.substring(stringValue.lastIndexOf(".")).length() > decimal){
                result = df.format(doubleValue);
            }else{
                result = String.valueOf(doubleValue);
            }
        }
    
        return result;
    }
    

    }
    [/code]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?