java - 将 double 格式设置为分数

是否有一个库可以将 Double 转换为 String 与整数,后跟分数?

例如

1.125 = 1 1/8

我只寻找 64 英寸以内的分数。

最佳答案

您的问题很简单,因为您确信在 C# 中分母将始终除以 64。(有人可以随意翻译 Java 版本):

string ToMixedFraction(decimal x) 
{
    int whole = (int) x;
    int denominator = 64;
    int numerator = (int)( (x - whole) * denominator );

    if (numerator == 0) 
    {
        return whole.ToString();
    }
    while ( numerator % 2 == 0 ) // simplify fraction
    {
        numerator /= 2;
        denominator /=2;
    }
    return string.Format("{0} {1}/{2}", whole, numerator, denominator);
}

奖励:代码高尔夫

public static string ToMixedFraction(decimal x) {
    int w = (int)x,
        n = (int)(x * 64) % 64,
        a = n & -n;
    return w + (n == 0 ? "" : " " + n / a + "/" + 64 / a);
}

https://stackoverflow.com/questions/379176/

相关文章:

json - 如何在 Delphi 中漂亮地打印 JSON?

c# - C# "formatting"标准是什么?

javascript - 以欧洲格式格式化数字,带两位小数

sql-server - 如何将数字格式化为带有填充零的字符串?

html - Jetbrains PhpStorm HTML 缩进

c++ - 是否有一个自动源代码格式化程序可以很好地包装 C/C++ 行?

python - 如何从列表中删除所有符合特定格式的字符串?

java - 除法后获取数字中的所有小数位

vba - 更改单元格中某些字符的颜色

java - 在 python 中将 java System.currentTimeMillis()