当前位置: 首页 > 知识库问答 >
问题:

Java:than/co/tan/ln/其他精度(双倍)?

梁泰
2023-03-14

这些函数通常给出一个结果的无理数,可能是通过泰勒级数计算的,但有没有关于这些级数重复多少次的文献
我想如果这是罪:

public double sin(double x,int n){
    double res = 0;
    for (int i=0;i<n;i++){
        res+=Math.pow(x,i)/this.factorial(x);
    }
    return res;
}

< code>n应该是什么?< br >我需要这个,因为我需要自己创建数学函数,所以我应该知道这些操作应该重复多少次。谢谢

共有3个答案

池恩
2023-03-14

基本的想法是,您一直重复,直到双精度不再变化,因为您添加的精度太小而无法在双精度中表示。

裴鸿熙
2023-03-14

只需查看Math类的文档。它指出最大错误是一个ulp,即ulp

对于给定的浮点格式,特定实数值的ulp是包围该数值的两个浮点值之间的距离

对于罪恶,误差为 1 ulp。

马梓
2023-03-14

对于Java 6,数学库将其几个调用(包括cos)委托给StrictMath,它在类文档中说:

这些算法可以从著名的网络库netlib中获得,名为“Freely Distributable Math library”fdlibm。

所以我谷歌了fdlibm,然后看了看k_cos. c,那里的实现近似于14度多项式。

 类似资料:
  • 问题内容: java中双值的乘法运算符的保证精度是多少? 例如,2.2 * 100是220.00000000000003,但是220是双精度数。220.00000000000003是220之后的下一个两倍。 问题答案: 乘法工作正常,但不能精确表示为双精度。最接近的双打是: 2.199999999999999733(0x4001999999999999) 2.200000000000000177(

  • 问题内容: 我试图确定双精度的最大精度是多少。在此链接的可接受答案的注释中,Java中的double保持精度 @PeterLawrey将max precision设置为15。 您如何确定呢? 问题答案: @PeterLawrey表示最大精度为15。 实际上,这根本不是他所说的。他说的是: 双精度有15个小数位 他错了。它们的精度为15个十进制 数字 。 任何数字中的小数位数由其对数10的对数给出。

  • 我试图确定double的最大精度是多少。在这个链接中接受的答案的注释中,Java中的Retain precision with double@PeterLawrey声明max precision In 15。 你如何确定这一点?

  • 我想用一个小数点和一个小数位的格式将任何双精度四舍五入为双精度,这样29575.347434将是2.3。 我试着用decimalFormat做这个,但当我试着我只得到了一个29575.3格式的字符串,带有一个,我不知道如何在保留值为双精度的同时去掉所有小数点。

  • 我想要得到一个特定位置附近的所有商店,但似乎我有一个查询字符串的问题。我已经检查了postgis的版本是PostGIS2.5.2_2。我也检查过,看看经度和纬度是否有双精度。 我尝试将查询重写到不同的查询字符串中,但仍然得到相同的错误。 我的实体: 我的存储库接口: 在postgres数据库中工作,但在java应用程序中,它返回一个错误: psqlException:error:“:”处或附近的语

  • 问题内容: 我想知道为什么会出现此错误。(这是Eclipse调试的显示日志) 我不明白为什么我没有得到2.97! 问题答案: 如果需要,您应该已经习惯了。 s以分数形式存储在 二进制 而不是十进制中。因此,例如,仅存储为。 并且不能精确地表示为二进制分数,因此会有一些舍入误差。 您可能还会发现本文很有帮助。