判断数值有效位数的Java工具类
发布时间:2020-05-24 16:09:06 所属栏目:Java 来源:互联网
导读:判断数值有效位数的Java工具类
|
下面是脚本之家 jb51.cc 通过网络收集整理的代码片段。 脚本之家小编现在分享给大家,也给大家做个参考。 public class AdjustmentDouble{
/**
* @param s 需处理的数据
* @param numOfIntPart 整数位数
* @param numOfDecimalPart 小数位数
* @return 处理过的数据
*/
public static String adjustDouble(String s,int numOfIntPart,int numOfDecimalPart){
//按小数点的位置分割成整数部分和小数部分
String[] array = s.split(".");
char[] tempA=new char[numOfIntPart];
char[] tempB=new char[numOfDecimalPart];
//整数部分满足精度要求(情况1)
if(array[0].length()==numOfIntPart){
//直接获取整数部分长度字符
for(int i=0;i<array[0].length();i++){
tempA[i]=array[0].charAt(i);
}
//小数部分精度大于或等于指定的精度
if(numOfDecimalPart<=array[1].length()){
for(int i=0;i<numOfDecimalPart;i++){
tempB[i]=array[1].charAt(i);
}
}
//小数部分精度小于指定的精度
if(numOfDecimalPart>array[1].length()){
for(int i=0;i<numOfDecimalPart;i++){
if(i<array[1].length()){
tempB[i]=array[1].charAt(i);
}else{
tempB[i]='0';
}
}
}
if(numOfDecimalPart==0){
return String.valueOf(tempA)+String.valueOf(tempB);
}
return String.valueOf(tempA)+"."+String.valueOf(tempB);
}
//整数部分位数大于精度要求(情况2)
if(array[0].length()>numOfIntPart){
//先倒序获取指定位数的整数
for(int i=array[0].length()-1,j=0;(i>=array[0].length()-numOfIntPart)&&(j<numOfIntPart);i--,j++){
tempA[j]=array[0].charAt(i);
System.out.println(tempA[j]);
}
char[] tempA1=new char[numOfIntPart];
//调整顺序
for(int j=0,k=tempA.length-1;j<numOfIntPart&&(k>=0);j++,k--){
tempA1[j]=tempA[k];
System.out.println("tempA1[j]"+tempA1[j]);
}
//小数部分精度大于或等于指定的精度
if(numOfDecimalPart<=array[1].length()){
for(int i=0;i<numOfDecimalPart;i++){
tempB[i]=array[1].charAt(i);
}
}
//小数部分精度小于指定的精度
if(numOfDecimalPart>array[1].length()){
for(int i=0;i<numOfDecimalPart;i++){
if(i<array[1].length()){
tempB[i]=array[1].charAt(i);
}else{
tempB[i]='0';
}
}
}
return String.valueOf(tempA1)+"."+String.valueOf(tempB);
}
//整数部分满足精度要求(情况3)
if(array[0].length()==numOfIntPart){
//直接获取整数部分长度字符
for(int i=0;i<array[0].length();i++){
tempA[i]=array[0].charAt(i);
}
//小数部分精度小于指定的精度
if(numOfDecimalPart>array[1].length()){
for(int i=0;i<numOfDecimalPart;i++){
if(i<array[1].length()){
tempB[i]=array[1].charAt(i);
}else{
tempB[i]='0';
}
}
}
//小数部分精度大于或等于指定的精度
if(numOfDecimalPart<=array[1].length()){
for(int i=0;i<numOfDecimalPart;i++){
tempB[i]=array[1].charAt(i);
}
}
if(numOfDecimalPart==0){
return String.valueOf(tempA)+String.valueOf(tempB);
}
return String.valueOf(tempA)+"."+String.valueOf(tempB);
}
//整数部分大于精度要求(情况4)
if(array[0].length()>numOfIntPart){
//先倒序获取指定位数的整数
for(int i=array[0].length()-1,j=0;(i>=array[0].length()-numOfIntPart+1)&&(j<numOfIntPart);i--,j++){
//System.out.println("<<<<"+(i-array[0].length()+1));
tempA[j]=array[0].charAt(i);
}
char[] tempA1=new char[numOfIntPart];
//调整顺序
for(int j=0,k=tempA.length-1;j<numOfIntPart&&(k>=0);j++){
tempA1[j]=tempA[k];
k--;
}
//小数部分精度小于指定的精度
if(numOfDecimalPart>array[1].length()){
for(int i=0;i<numOfDecimalPart;i++){
if(i>=array[1].length()){
tempB[i]='0';
}else{
tempB[i]=array[1].charAt(i);
}
}
}
//小数部分精度大于或等于指定的精度
if(numOfDecimalPart<=array[1].length()){
for(int i=0;i<numOfDecimalPart;i++){
tempB[i]=array[1].charAt(i);
}
}
if(numOfDecimalPart==0){
return String.valueOf(tempA1)+String.valueOf(tempB);
}
return String.valueOf(tempA1)+"."+String.valueOf(tempB);
}
//整数部分小于精度要求(情况5)
if(array[0].length()<numOfIntPart){
//先倒序获取指定位数的整数
char[] tempA1=new char[numOfIntPart];
for(int i=array[0].length()-1,j=0;(i>=numOfIntPart-array[0].length()-(numOfIntPart-array[0].length()))&&(j<numOfIntPart);i--,j++){
tempA1[j]=array[0].charAt(i);
System.out.println("<<<<<<tempA1[j]"+tempA1[j]);
}
//补0
for(int i=array[0].length();i<array[0].length()+numOfIntPart-array[0].length();i++){
tempA1[i]='0';
System.out.println("<<<<<<"+tempA1[i]);
}
char[] tempA2=new char[numOfIntPart];
//调整顺序
for(int j=0,k=tempA1.length-1;j<numOfIntPart&&(k>=0);j++){
tempA2[j]=tempA1[k];
k--;
}
//小数部分精度小于指定的精度
if(numOfDecimalPart>array[1].length()){
for(int i=0;i<numOfDecimalPart;i++){
if(i<array[1].length()){
tempB[i]=array[1].charAt(i);
}else{
tempB[i]='0';
}
}
}
//小数部分精度大于或等于指定的精度
if(numOfDecimalPart<=array[1].length()){
for(int i=0;i<numOfDecimalPart;i++){
tempB[i]=array[1].charAt(i);
}
}
if(numOfDecimalPart==0){
return String.valueOf(tempA2)+String.valueOf(tempB);
}
return String.valueOf(tempA2)+"."+String.valueOf(tempB);
}
//情况(6)
if((array[0].length()<numOfIntPart)&&(array[1].length()<numOfDecimalPart)){
for(int i=0; i< numOfIntPart-array[0].length(); i++){
s = "0"+s ;
}
for(int i = 0 ; i < numOfDecimalPart -array[1].length() ; i++){
s = s+"0" ;
}
return s;
}
return null;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String s = "1234.123";
s = AdjustmentDouble.adjustDouble(s,5,6);
System.out.println(s);
}
}
以上是脚本之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。 如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
