问题描述
需求:用socket 网络编程,从输入框(也就是图中的2)中输入10/3,机器检测到会产生2位以上的小数时,就会询问要保留几位小数,客户端在输入框再输入“3位”,机器就会按照该要求输出结果,只用考虑做一种情况,不用考虑扩展,界面代码我已经贴上面了,部分路径什么的可能要很简单的修改一下,这个需求说难不难,说简单不简单,小弟才疏学浅,还请大神们不吝赐教啊,如果觉得懒得写,大家可以直接在楼下讨论,小弟3个小时内秒回
解决方案
我不想下你的代码去看,如果你能看懂下面的代码,你集成起来绝对不是问题。PS:下面有几个地方需要你稍微注意一下,自己看...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;}}