相关疑难解决方法(0)

如何将浮点数转换为人类可读的分数?

假设我们有0.33,我们需要输出"1/3".
如果我们有"0.4",我们需要输出"2/5".

我们的想法是让人们可读,让用户理解"y部分中的x部分",作为理解数据的更好方式.

我知道百分比是一个很好的替代品,但我想知道是否有一个简单的方法来做到这一点?

language-agnostic algorithm numbers

100
推荐指数
11
解决办法
5万
查看次数

使用分数指数与bc

bc,一个linux命令行计算器,非常精通计算

3^2
9
Run Code Online (Sandbox Code Playgroud)

即使是负指数也不会混淆它:

3^-2
0.11111
Run Code Online (Sandbox Code Playgroud)

然而当它在它出现时失败了

9^0.5
Runtime warning (func=(main), adr=8): non-zero scale in exponent
Run Code Online (Sandbox Code Playgroud)

怎么可能是bc无法处理这个?

错误信息是什么意思?


是的,我已经阅读了 http://www.linuxquestions.org/questions/programming-9/bc-and-exponents-containing-decimals-and-fractions-755260/ 和解决方案

e(0.5*l(9))
2.99999999999999999998
Run Code Online (Sandbox Code Playgroud)

在那里.

是的,由于精确度的损失,它并不好

计算器应该解决表达式.你不应该让计算器的生活更轻松,它应该是另一种方式......


功能旨在鼓励用户编写自己的功能.使其成为一个独特的计算器,需要用户定义的函数来计算平方根.

它并没有真正困扰我写的切线或余切值的功能,因为它看起来非常简单给出s(x)c(x).但在我看来,通过用户定义的函数计算平方根有点太多了.

为什么有人使用bc,如果那里有python?速度?

exponent sqrt bc

10
推荐指数
2
解决办法
6564
查看次数

自制的pow()c ++

我正在阅读如何自己编写电源功能?dan04给出的答案引起了我的注意,主要是因为我不确定fortran给出的答案,但我接受了并实现了这个:

#include <iostream>
using namespace std;
float pow(float base, float ex){
    // power of 0
    if (ex == 0){
        return 1;
    // negative exponenet
    }else if( ex < 0){
        return 1 / pow(base, -ex);
    // even exponenet
    }else if ((int)ex % 2 == 0){
        float half_pow = pow(base, ex/2);
        return half_pow * half_pow;
    //integer exponenet
    }else{
        return base * pow(base, ex - 1);
    }
}
int main(){
    for (int ii = 0; ii< 10; ii++){\
        cout << "pow(" …
Run Code Online (Sandbox Code Playgroud)

c++ math

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

如何计算任意功率/根?

我有一个应用程序,需要将一个数字提高到一个分数幂.目标平台是一个FPGA,我可以得到它的FPU大小的估计,但我需要一个算法,只是为了可行性研究将数字提高到一个分数功率.我假设浮点数是最坏的情况,我预计在实践中我们将能够使用捷径,但是现在我想表明我们可以实施最坏情况.

以为我会问这里,看看是否有任何常见的方法可以结账.我知道有这样做的软件方法,我想要一个合理有效的算法开始.我会担心FPGA的实现.

algorithm math floating-point exponent

6
推荐指数
2
解决办法
4773
查看次数

负指数平方的幂

我不确定平方的幂是否可以处理负指数。我实现了以下仅适用于正数的代码。

    #include <stdio.h>
    int powe(int x, int exp)
    {
         if (x == 0)
            return 1;
         if (x == 1)
            return x;
         if (x&1)
                return powe(x*x, exp/2);
         else
                return x*powe(x*x, (exp-1)/2);       
    }
Run Code Online (Sandbox Code Playgroud)

查看https://en.wikipedia.org/wiki/Exponentiation_by_squaring没有帮助,因为以下代码似乎是错误的。

    Function exp-by-squaring(x, n ) 
      if n < 0  then return exp-by-squaring(1 / x, - n );
      else if n = 0  then return  1;
      else if n = 1  then return  x ; 
      else if n is even  then return exp-by-squaring(x * x,  n / 2); …
Run Code Online (Sandbox Code Playgroud)

c algorithm math recursion

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

math.h pow vs手动电源性能

我只是想知道库的pow功能是如何math.h工作的,它是实现最简单的顺序算法还是使用其他的?

我只知道重复的平方算法,它报告O(log n),也许这是pow函数实现的算法?

所以我只是使用顺序算法vs进行了一些测试pow,发现第一个版本几乎比第二个快3倍.调用函数真的会惩罚这个测试的性能吗?为什么?

任何其他评论解释正在发生的事情或如何pow实施是值得欢迎的.

编辑:我错了,比顺序算法pow 3倍.

c++ algorithm performance time math.h

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

'Grokkable' 算法来理解指数是浮点的取幂

先澄清一下:

  • 2^3 = 8。这相当于 2*2*2。简单。
  • 2^4 = 16。这相当于 2*2*2*2。也很轻松。
  • 2^3.5 = 11.313708……呃,这可没那么容易理解。

我想要的是一个简单的算法,它最清楚地显示了 2^3.5 = 11.313708。除了基本的加法、减法、乘法或除法运算符之外,最好不要使用任何函数。

代码当然不必很快,也不必很短(尽管这会有所帮助)。别担心,它可以近似于给定的用户指定的准确度(这也应该是算法的一部分)。我希望会有一个二进制印章/搜索类型的事情,因为这很容易理解。

到目前为止,我已经找到了this,但在概念层面上,最重要的答案远非简单易懂。

答案越多越好,因此我可以尝试了解解决问题的不同方法。

我对答案的语言偏好是 C#/C/C++/Java,或者我所关心的伪代码。

c c# c++ algorithm exponentiation

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

带参数约束的定点幂 (pow) 函数的高效实现

我正在寻找函数的有效实现pow(a, b),其中a仅限于区间(0,1),并且b>= 1(两者都是实数 - 即不一定是整数)。

如果有帮助, b这不是一个很高的数字——假设它小于 10-20。这将打开迭代解决这个问题的可能性,迭代次数很少~=b

代码应该在 32 位微控制器上工作,可能没有浮点单元(即,使用定点实现)。

我如何实现这样一个功能,针对以下约束进行优化?我正在寻找算法本身,所以伪代码是可以接受的。

algorithm math optimization fixed-point pow

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