标签: fractions

如何将浮点数转换为由字节分子和分母表示的最接近的分数?

如何编写一个算法,给定一个浮点数,并尝试使用分子和分母(两者都限制在 Java 字节的范围内)尽可能准确地表示?

原因是 I2C 设备需要分子和分母,而给它一个浮点数是有意义的。

例如,3.1415926535...将导致245/78, 而不是314/10022/7

就效率而言,在程序开始时会调用大约三次,但之后就不再调用了。所以慢的算法也不算糟糕。

java algorithm math floating-point fractions

5
推荐指数
2
解决办法
5372
查看次数

在 Javascript 中将小数金额转换为文本字符串分数?

我有一个以数字形式返回的值,可以是十进制数,例如“1.15”。

但是,我需要将一定范围内的所有数字格式化为给定的分数。例如,所有大于 0 但小于 0.2 的数字我想返回“1/8”。

我已经开始将其作为一系列 if/else 语句来执行此操作,但我想知道是否有更聪明、更简洁的方法。

if (amt > 0 && amt <= .2){
    q = '1/8';
} else if (amt > .2 && amt <= .3){
    q = '1/4';
}  else if (amt > .3 && amt <= .4){
    q = '1/3';
}  else if (amt > .4 && amt <= .5){
    q = '1/2';
} else if (amt > .5 && amt <= .7){
    q = '2/3';
} else if (amt > .7 …
Run Code Online (Sandbox Code Playgroud)

javascript fractions

5
推荐指数
1
解决办法
3036
查看次数

Sympy - 合理化表达式中的所有数值?(就像 Mathematica 的 Rationalize[])

是否有一种简单的方法来(尝试)合理化给定 delta 中表达式中的所有数值,就像Rationalize[]在 Mathematica 中一样?

Mathematica 中的一个例子:

In[25]:= Rationalize[0.5 x^2 - 3.333333 x, 10^-4]
Out[25]= x^2/2-(10 x)/3
Run Code Online (Sandbox Code Playgroud)

我看到了这个nsimplify()功能,但这似乎有点矫枉过正。

python sympy fractions

5
推荐指数
1
解决办法
3582
查看次数

Python 2.7 - 续分数扩展 - 理解错误

我编写了这段代码来计算使用欧几里德算法的有理数N的连续分数展开:

from __future__ import division

def contFract(N):
    while True:
        yield N//1
        f = N - (N//1)
        if f == 0:
            break
        N = 1/f
Run Code Online (Sandbox Code Playgroud)

如果说N是3.245,则函数永远不会结束,因为显然f永远不等于0.扩展的前10个术语是:

[3.0,4.0,12.0,3.0,1.0,247777268231.0,4.0,1.0,2.0,1.0]

这显然是一个错误,因为实际扩展只是:

[3; 4,12,3,1]或[3; 4,12,4]

是什么原因引起了这个问题?这是某种舍入错误吗?

python division integer-division fractions continued-fractions

5
推荐指数
1
解决办法
405
查看次数

如何避免在 std::modf 中使用临时变量?

我最近遇到了一个问题,我在 MSVC 中遇到了段错误,而在 GCC 中却没有。

几个小时后,我意识到显然我的 MSVC 版本不支持以下语法:

double value = 3.4;
double fractional = std::modf(value, nullptr);
Run Code Online (Sandbox Code Playgroud)

我不想要/关心数字的整个部分。

是的,我知道我可以做“3.4 - 3.0”之类的,但我担心以这种方式专门使用 modf。目前我只能通过以下方式看到这样做:

double temp; 
double value = 3.4;
double fractional = std::modf(value, &temp);
Run Code Online (Sandbox Code Playgroud)

有没有办法绕过这个临时变量?

c++ modulo fractions cmath visual-c++

5
推荐指数
2
解决办法
568
查看次数

Java - 将小时数(以双倍为单位)转换为分钟数(整数),反之亦然

我需要正确的公式,将小时转换为分钟,反之亦然.我编写了一个代码,但它似乎没有按预期工作.例如:如果我有小时= 8.16,那么分钟应该是490,但我得到的结果为489.

  import java.io.*;
  class DoubleToInt {

  public static void main(String[] args) throws IOException{

  BufferedReader buff = 
  new BufferedReader(new InputStreamReader(System.in)); 
  System.out.println("Enter the double hours:");
  String d = buff.readLine();

  double hours = Double.parseDouble(d);
  int min = (int) ((double)hours * 60);

  System.out.println("Minutes:=" + min);
  }
} 
Run Code Online (Sandbox Code Playgroud)

java datetime decimal fractions

4
推荐指数
1
解决办法
2万
查看次数

在C#中将double转换为分数为字符串

我想在C#中将double值显示为分数,我该怎么做?

谢谢

c# fractions

4
推荐指数
1
解决办法
6323
查看次数

如何添加两个分数?

假设已经给出了这些功能:

include <stdio.h>     /* printf                         */
include "fractions.h" /* struct FRACTION, add_fractions */

struct FRACTION make_fraction(int numerator, int denominator)
{
  struct FRACTION f;

  f.numerator = numerator;
  f.denominator = denominator;

  return f;
}

void test_fraction(int numerator1, int denominator1, 
                   int numerator2, int denominator2)
{
  struct FRACTION a = make_fraction(numerator1, denominator1);
  struct FRACTION b = make_fraction(numerator2, denominator2);

  struct FRACTION c = add_fractions(&a, &b);

  printf("%i/%i + %i/%i = %i/%i\n", a.numerator, a.denominator,
                                    b.numerator, b.denominator,
                                    c.numerator, c.denominator);
}

void testGCD(void)
{
  int m, n;

  m = …
Run Code Online (Sandbox Code Playgroud)

c add fractions

4
推荐指数
1
解决办法
5022
查看次数

将浮点数转换为javascript中的近似分数

我们需要将计算出的值(例如3.33333000540733337)转换为3 1/3.我试过的任何库如https://github.com/peterolson/BigRational.js都会将其转换为最准确的有理数,而我只关注近似有理数,到.01有效小数.

在ruby中,我们目前使用Rational(1.333).理性化(Rational(0.01)),它给出1作为整数,1作为分子,3作为分母.

对可能有用的算法的任何想法都会很棒.

javascript math decimal fractions

4
推荐指数
1
解决办法
1910
查看次数

Python中的浮点数到分数转换

在Python 3.52中进行从浮点类型到分数类型转换的主题的练习时,我发现了两种不同转换方式之间的区别。

第一种方法是:

>>> from fractions import Fraction
>>> x = 1232.23
>>> f = Fraction(*x.as_integer_ratio())
>>> print(f)
2709702426188841/2199023255552      #Answer
Run Code Online (Sandbox Code Playgroud)

第二种方法是:

>>> from fractions import Fraction
>>> x = 1232.23
>>> f = Fraction(str(x))
>>> print(f)
123223/100                          #Answer
Run Code Online (Sandbox Code Playgroud)

我想知道这两个不同答案背后的原因吗?抱歉,如果这是一个愚蠢的问题,我是编程和Python的新手。

编辑:我找到了一种方法,可以将第一种方法获得的不精确分数转换为按limit_denominator方法精确:

>>> from fractions import Fraction
>>> x = 1232.23
>>> f = Fraction(*x.as_integer_ratio())
>>> f = f.limit_denominator(100)     
>>> print(f)
123223/100
Run Code Online (Sandbox Code Playgroud)

python floating-point type-conversion fractions

4
推荐指数
1
解决办法
1606
查看次数