求小数变成分数的算法?

ppcodeyes 2004-08-05 02:43:38
比如:
0.12 => 3/25
0.5 => 1/2
0.58 => 29/50

现在不知道如何才能自动换成最简分数。
万分感觉
...全文
697 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
ppcodeyes 2004-08-08
  • 打赏
  • 举报
回复
测试了一下,发现1/3, 1/7这样的转成小数后不能转回来了。请问各位有没有好办法
junmayang 2004-08-05
  • 打赏
  • 举报
回复
我一分都没有!
charmguy 2004-08-05
  • 打赏
  • 举报
回复
收藏
ppcodeyes 2004-08-05
  • 打赏
  • 举报
回复
结帐啦
whasx 2004-08-05
  • 打赏
  • 举报
回复
厉害
ppcodeyes 2004-08-05
  • 打赏
  • 举报
回复
测试通过,大侠啊,真是感谢了。好人、强人也
ppcodeyes 2004-08-05
  • 打赏
  • 举报
回复
万分感激,先试试看。
liutang2 2004-08-05
  • 打赏
  • 举报
回复
Lutx 2004-08-05
  • 打赏
  • 举报
回复
临时写了一个,仅供参考。

package ltx;

import java.lang.String;

public class Xs2fs {


public static String xs2fs(double fNumber) {

String sA = String.valueOf(fNumber);

if (sA.indexOf(".") < 0) {
// fNumber is an integer

return sA;
}

String sZsbf = sA.substring(0,sA.indexOf(".") );
String sXsbf = sA.substring(sA.indexOf(".") + 1);

int nXsws = sXsbf.length() ; //小数位数

long lFenmu = 1;
for (int k=0; k< nXsws; k++)
lFenmu *= 10;

long lFenzi = Long.parseLong( sZsbf + sXsbf );

long lXs = (lFenzi < lFenmu) ? lFenzi : lFenmu;

long j = 1; //最大公约数
for (j = lXs; j > 1; j --) {
if (lFenzi % j ==0 && lFenmu % j == 0) {
break;
}
}

lFenzi = lFenzi / j;
lFenmu = lFenmu / j;

return String.valueOf(lFenzi) + "/" + String.valueOf(lFenmu) ;

}

public static void main(String[] args) {
System.out.println ( xs2fs(1.24) );
}

}
ppcodeyes 2004-08-05
  • 打赏
  • 举报
回复
god 在哪儿啊
ppcodeyes 2004-08-05
  • 打赏
  • 举报
回复
就是这个算法不好写,不知道有没有现成的啊,大哥
junmayang 2004-08-05
  • 打赏
  • 举报
回复
先把小数转成10的N次方分之几的形式,然后算分子和分母的最大公数,再把分子和分母除以这个最大分约数,不就换成了最简分数?

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧