相关疑难解决方法(0)

对数算法

我需要以某种精度来评估任何基数的对数,无关紧要.有算法吗?我用Java编程,所以我对Java代码很好.

如何快速找到二进制对数?(O(1)充其量)也许能够回答我的问题,但我不明白.它可以澄清吗?

java algorithm math logarithm

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

如何在Java中对BigDecimal进行分数处理?

在我的小项目中,我需要做一些像Math.pow(7777.66,5555.44)这样的东西只有非常大的数字.我遇到了一些解决方案:

  • 使用双倍 - 但数字太大
  • 使用BigDecimal.pow但不支持小数
  • 使用X ^(A + B)= X ^ A*X ^ B公式(B是第二个数字的余数),但是再次不支持大X或大A,因为我仍然转换为double
  • 使用某种泰勒级数算法或类似的东西 - 我不是很擅长数学,所以如果我找不到任何解决方案(一些库或(A + B)的公式^(C),这个是我的最后一个选项+ d)).

有人知道图书馆或简单的解决方案吗?我想很多人都处理同样的问题......

ps我发现了一些名为ApFloat的图书馆声称要做大约,但我得到的结果是如此近似,甚至8 ^ 2给了我60 ...

java formula bigdecimal pow

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

BigInteger的对数

我有一个BigInteger数字,例如超过2 64.现在我想计算该BigInteger数字的对数,但该方法BigInteger.log()不存在.如何计算我的大BigInteger值的(自然)对数?

java math logarithm biginteger

23
推荐指数
3
解决办法
1万
查看次数

BigDecimal在Java/Android上的BigDecimal功能

我有一个简单的BigDecimal,我想为另一个BigDecimal供电,例如11.11 ^ -1.54.在Java/Android中最好的方法是什么?我不喜欢转换为双打的想法,因为它是用于医疗应用,所以我很欣赏最大的可能性.到目前为止,我已经查看了来自Google Guava的http://commons.apache.org/math/和数学内容,但一无所获.

编辑:整个计算很复杂,并且有很多这样的操作.我需要尽可能多的精度.

java android bigdecimal

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

为什么log(1000)/ log(10)与log10(1000)不一样?

今天,我遇到了很奇怪的问题.我需要计算一个数字的字符串长度,所以我想出了这个解决方案

// say the number is 1000
(int)(log(1000)/log(10)) + 1
Run Code Online (Sandbox Code Playgroud)

这是基于数学公式

log10 x = logn x/logn10(这里解释)

但我发现,在C中,

(int)(log(1000)/log(10)) + 1
Run Code Online (Sandbox Code Playgroud)

不是等于

(int) log10(1000) + 1
Run Code Online (Sandbox Code Playgroud)

但它应该是.

我甚至用Java编写了相同的代码

(int) (Math.log(1000) / Math.log(10)) + 1
(int) Math.log10(1000) + 1
Run Code Online (Sandbox Code Playgroud)

但它的行为方式却一样错误.

故事还在继续.执行此代码后

for (int i = 10; i < 10000000; i *= 10) {
   System.out.println(((int) (Math.log10(i)) + 1) + 
                " " + ((int) (Math.log(i) / Math.log(10)) + 1));
}
Run Code Online (Sandbox Code Playgroud)

我明白了

2 2
3 3 …
Run Code Online (Sandbox Code Playgroud)

c java math logarithm

3
推荐指数
3
解决办法
4186
查看次数

计算对数

我正在尝试编写一个方法,它接受基数k和值n到2位小数,然后计算n的日志基数k,而不使用任何Java的Math.log方法.这是我到目前为止所拥有的:

public static double log(double k, double n) {
    double value = 0.0;

    for(double i = 1; i > .001; i /= 10) {
        while(!(Math.pow(k, value) >= n )) {
            value += i;
        }
    }

    return value;
}
Run Code Online (Sandbox Code Playgroud)

当我尝试计算5.0625的日志库4时,问题出现了,它返回2.0,但应该返回1.5.

我不知道为什么这不起作用.任何帮助表示赞赏.

不,这不是功课,它是我试图解决的问题集的一部分.

java math logarithm

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

如何在Golang中计算256位整数的log16

如何获取 math/big Int 变量以 16 为底的对数。

任何帮助都会很棒,因为我是 Go 新手并且来自 Python 和 C 环境

s := "c6d86e5a2cb4bc532361c2d4940f0b1a0138066e25d65c1c530d080b11f8ca24" // Hex value
i := new(big.Int)
i.SetString(s, 16) // hex value to Big Int
// how to get the log with base 16 for a math/big Int variable.
Run Code Online (Sandbox Code Playgroud)

它在Python中是如何工作的

import math 
a = 0xc6d86e5a2cb4bc532361c2d4940f0b1a0138066e25d65c1c530d080b11f8ca24
a>> 89940344608680314083397671686667731393131665861770496634981932531495305005604L
math.log(a)/math.log(16.0)
Run Code Online (Sandbox Code Playgroud)

答案是 63.908875905794794

math go

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

log(10^k) 的近似值

我试图找到 log(10^k) 的结果,其中 k 是像 10000 这样的大数字。例如:

BigDecimal first = BigDecimal.TEN.pow(10000);
double result = Math.log(first.doubleValue());

Run Code Online (Sandbox Code Playgroud)

然而,“结果”变成 Infinity ,但是在 wolphram 上将其近似为 23025.85.Any 建议如何找到结果?结果小数点后前两位的数字对我来说就足够了。

java algorithm math

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

标签 统计

java ×7

math ×6

logarithm ×4

algorithm ×2

bigdecimal ×2

android ×1

biginteger ×1

c ×1

formula ×1

go ×1

pow ×1