package huawei;
import java.math.BigDecimal;
public final class Demo {
/*****************************************************************************
Description : 两个任意长度的长数相乘, 输出结果
Input Param :
String multiplierA 乘数A
String multiplierB 乘数B
Return Value :
乘法结果;如果数据异常,返回null
*****************************************************************************/
public static String multiply (String multiplierA, String multiplierB)
{
if(!IsValidate(multiplierA)||!IsValidate(multiplierB))
return null;
BigDecimal decA=new BigDecimal(multiplierA);
BigDecimal decB=new BigDecimal(multiplierB);
BigDecimal result=decA.multiply(decB);
String resultStr=result.toPlainString();
boolean isDecimal=false;
for(int i=0;i<resultStr.length();i++)
{
if(resultStr.charAt(i)=='.')
{
isDecimal=true;
break;
}
}
int endIndex=resultStr.length();
if(isDecimal)
{
for(endIndex=resultStr.length()-1;endIndex>=0;endIndex--)
{
if(resultStr.charAt(endIndex)!='0') break;
}
if(resultStr.charAt(endIndex)=='.') endIndex--;
if(endIndex==-1) endIndex++;
endIndex++;
}
return resultStr.substring(0,endIndex);
}
public static boolean IsValidate(String str)
{
if(str.equals("")) return false;
int dotNums=0,len=str.length();
for(int i=0;i<len;i++)
{
if(i==0&&(str.charAt(i)=='-'||str.charAt(i)=='+'))
{
if(len>=2) continue;
else return false;
}
if(str.charAt(i)=='.')
{
dotNums++;continue;
}
if(str.charAt(i)<'0'||str.charAt(i)>'9')
return false;
}
if(dotNums>1)
return false;
else if(dotNums==1&&(str.charAt(0)=='.'||str.charAt(len-1)=='.'))
return false;
else
return true;
}
}
JAVA大数相乘
最新推荐文章于 2021-02-18 22:32:30 发布