博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java字符如何向float转换_java – 将float转换为字符串分数表示
阅读量:6361 次
发布时间:2019-06-23

本文共 967 字,大约阅读时间需要 3 分钟。

最简单的方法可能是使用反复试验.

public static String toFraction(double d, int factor) {

StringBuilder sb = new StringBuilder();

if (d < 0) {

sb.append('-');

d = -d;

}

long l = (long) d;

if (l != 0) sb.append(l);

d -= l;

double error = Math.abs(d);

int bestDenominator = 1;

for(int i=2;i<=factor;i++) {

double error2 = Math.abs(d - (double) Math.round(d * i) / i);

if (error2 < error) {

error = error2;

bestDenominator = i;

}

}

if (bestDenominator > 1)

sb.append(' ').append(Math.round(d * bestDenominator)).append('/') .append(bestDenominator);

return sb.toString();

}

public static void main(String... args) {

System.out.println(toFraction(1.3333, 1000));

System.out.println(toFraction(1.1428, 1000));

for(int i=1;i<100000000;i*=10) {

System.out.println("PI "+i+": "+toFraction(3.1415926535897932385, i));

}

}

版画

1 1/3

1 1/7

PI 1: 3

PI 10: 3 1/7

PI 100: 3 14/99

PI 1000: 3 16/113

PI 10000: 3 16/113

PI 100000: 3 14093/99532

PI 1000000: 3 140914/995207

PI 10000000: 3 244252/1725033

转载地址:http://zjima.baihongyu.com/

你可能感兴趣的文章
502错误详解
查看>>
ARM开发板 嵌入式Linux 修改开机启动LOGO
查看>>
Baby-gin
查看>>
Docker实践(2)—虚拟网络
查看>>
C#实现多线程的方法:线程(Thread类)和线程池(ThreadPool)
查看>>
Ubuntu安装pintos
查看>>
看这里,教你如何快速将pdf文件翻译成中文
查看>>
开源Linux监控系统:Icinga
查看>>
Android模拟器检测常用方法
查看>>
sqlite 中判断某个表是否存在的方法
查看>>
历史数据的清理方法
查看>>
rrdtool学习和自定义脚本绘制图形备忘
查看>>
LayuI固定块关闭
查看>>
linux基础命令(4)
查看>>
七夕情人节,赵强老师视频课程全场7.7折!Oracle最低一折!
查看>>
Extjs的文件上传问题
查看>>
以链接克隆方式创建vSphere虚拟机
查看>>
Managed File Transfer and Network Solutions
查看>>
物联网的遐想和展望
查看>>
iphone 软件开发让我们的事业有着一个更大的发展平台
查看>>