function DecimalToFraction(dec,_digit)
{
var returnF=String(dec);
var NUMFRACS=30;
var numerator = new Array();
var denominator = new Array();
var IsMinus = false;
if(dec<0)
{
IsMinus=true;
}
dec=Math.abs(dec);
var pre = Math.floor(dec);
function GetFraction()
{
var dec = parseFloat(document.all["txtDec"].value);
var digit = parseInt(document.all["txt"].value);
document.all["txtFraction"].value = DecimalToFraction(dec,digit);
}
</script>
/**
带精度的四舍五入
*/
function NumberRound(value,num){
value = value * Math.pow(10,num);
value = Math.round(value);
value = value / Math.pow(10,num);
}
写错了,忘记返回值了。
改为:
/**
带精度的四舍五入
*/
function NumberRound(value,num){
value = value * Math.pow(10,num);
value = Math.round(value);
value = value / Math.pow(10,num);
return value;
<script language="VBScript">
Function DecimalToFraction(dec)
If dec=0 Then
DecimalToFraction="0"
Exit Function
End If
If Fix(dec)=Dec Then
DecimalToFraction="1" / CStr(dec)
Exit Function
End If
Dim fm : fm=1/dec
If Fix(fm)=fm Then
DecimalToFraction="1 / " & CStr(fm)
Exit Function
End If
Dim nfm : nfm=fm
Dim i : i=1
WHile True
fz=i
fm=nfm*i
If Fix(fm)=fm Then
DecimalToFraction=CStr(i) & " / " & CStr(fm)
Exit Function
End If
i=i+1
If i>32768 Then
DecimalToFraction="溢出"
Exit Function
End If
Wend
End Function
MsgBox DecimalToFraction(3.14)
</script>
<SCRIPT LANGUAGE="JavaScript">
<!--
/**
格式化小数
*/
function FormatNumber(value,num){
var valuelen = String(value).length;
var pointpos = String(value).indexOf(".");
var decimalcount =0;
if(pointpos==-1){
decimalcount =0;
}else{
decimalcount = valuelen-pointpos-1;
}
if(decimalcount<=num){
return value;
}else if(decimalcount<=num+1){
value = NumberRound(value,num);
alert(value);
return value;
}else{
var templen = decimalcount - num -1;
var endpos = valuelen-templen;
var valuestr = String(value).substring(0,endpos);
value = parseFloat(valuestr);
value = NumberRound(value,num);
return value;
}
}
/**
带精度的四舍五入
*/
function NumberRound(value,num){
value = value * Math.pow(10,num);
value = Math.round(value);
value = value / Math.pow(10,num);
}
/**
将小数转为分数
*/
function DecimalToFraction(dec,digit){
dec = FormatNumber(dec,digit);
alert(dec);
var decx,decy,decz;
decy=decz=digit=Math.pow(10,digit);
decx=dec=dec*digit;
while(decx>0){
decz=decx;
decx=decy%decz;
decy=decz
}
return(dec/decz+"/"+digit/decz);
}
alert(DecimalToFraction(1.751,2));
alert(DecimalToFraction(1.745,2));
//-->
</SCRIPT>