JAVA如何检查小数位
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA如何检查小数位相关的知识,希望对你有一定的参考价值。
现在有一个String 型的字符串a!我想要的功能是检测a 是否有小数位!如果没有的话是整数则后面加上".00", 如果有的话保留两位小数!这个要怎么写啊?
参考技术A 看看这样满足要求吗? 可以根据自己的需求添加相应的判断。 多加思考! package cn.com.storm.common.test; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Test private final static int NUMBER_COUNT = 3; public static void main(String[] args) BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.println("请输入一个数字(小数点不能超过" + NUMBER_COUNT + "位):"); try String line = br.readLine(); // 输入数据的格式判断 if (line.startsWith("0") || line.endsWith(".")) System.out.println("你输入的数据格式不正确!"); else // 输入数据转化成Double类型 try Double.valueOf(line); int length = line.length() - line.lastIndexOf(".") - 1; // 判断小数点是否超过 if (length > NUMBER_COUNT) System.out.println("小数点超过" + NUMBER_COUNT + "位!"); else System.out.println("输入正确!"); catch (NumberFormatException ex) System.out.println("你输入的数据不是数字!"); catch (IOException e) System.out.println("读取数据时发生错误:" + e.getMessage()); 参考技术B 郁闷、提交不了、说"您的答案包含政治、敏感词汇,请修改!"、我截图给你看、你另存为后放大后看吧、、java里如何在输出浮点数小数部分为0时自动将小数点和小数部分隐藏
rt在线等答案
可以直接以浮点数和其强转为整数的数值进行比较,相同则直接取整数,即去掉小数点;
否则,即不同时,原样输出;
PS.
参考技术A如果浮点数据比较小,可采用(int)强制转换方式,进行取整数后的两数比较,确定是否有小数位,进行相应的格式输出。但,浮点数据范围远超过int所能承受的范围,所以,这种方法局限性很大,所以,采用字符串检查处理方法可以满足所有浮点数的情况,代码如下,供参考:
static String fmt_prt_double( Double d ) //自定义格式化输出函数
String s=String.format("%f", d);//将浮点数转为字符串
int i;
for( i=s.length()-1;i>=0;i-- ) //从串尾向前检查,遇到非0数据结束循环
if ( s.charAt(i)=='.' ) //遇到小数点结束,说明是个整数
break;
if ( s.charAt(i) != '0' ) //遇到小数中有非0值,结束
i++;
break;
return s.substring(0,i); //返回处理后的子串
//以下进行相应的数据验证
public static void main(String[] args)
Double dd = 1234567890123.00;
System.out.println( fmt_prt_double(dd) );
dd = 1234567890123.01;
System.out.println( fmt_prt_double(dd) );
dd = 0.0;
System.out.println( fmt_prt_double(dd) );
dd = 0.00023;
System.out.println( fmt_prt_double(dd) );
参考技术B 楼上的解法有点问题,当小数部分不为0时也截取了。我的想法是将小数部分截取出来与0比较。下面是代码
double a=10.00d;
long result = 0;
String str=a+""; //将这个浮点数转化为字符串
int index=str.indexOf(".");
String s=str.substring(index+1,str.length());//获取小数部分的子字符串
int in=Integer.parseInt(s);//将代表小数部分的字符串转化为整数
if(in==0) //如果小数部分等于0,则去掉小数部分和小数点
result=Math.round(a);
System.out.println(result);
else //否则直接打印出这个浮点数
System.out.println(a);
本回答被提问者采纳 参考技术C 先将浮点数转换为字符串,然后判断"."之后是否为0.如果为0就只保留 . 之前的数,然后在把字符串转换为浮点数。 参考技术D 首先要判断这个数是不是等于0,判断方法不是用==,而是:
double a=0.0d;
long result=0l;
if(a>1e-3 || a<-1e-3)
result=Math.round(a);
此时result就是你要的值
以上是关于JAVA如何检查小数位的主要内容,如果未能解决你的问题,请参考以下文章