C 当值超过内存阈值时,会产生扭曲的结果
N.b.以下代码是在不使用库的情况下故意编写的C 当值超过内存阈值时,会产生扭曲的结果,c,memory,C,Memory,N.b.以下代码是在不使用库的情况下故意编写的 N.b.1我之前发布了关于此代码的另一个问题,但涵盖了另一个问题。这是另一个问题: 要计算近似值,请执行以下操作: 我需要使用以下公式: 我只是写了下面的代码来实现这一点 但是,我发现当我尝试使用k的大值时,我开始得到不准确的结果。例如,当插入x=2和k>=40以获取e^-2的值时,我看不到正确的结果,但是关于第一个问题: 是的,long double可以提高准确性,但也有其局限性。因此,如果您需要更高的精度,您必须实现自己的数据类型。。。(如
N.b.1我之前发布了关于此代码的另一个问题,但涵盖了另一个问题。这是另一个问题:
要计算近似值,请执行以下操作:
我需要使用以下公式:
我只是写了下面的代码来实现这一点
但是,我发现当我尝试使用
k
的大值时,我开始得到不准确的结果。例如,当插入x=2
和k>=40
以获取e^-2的值时,我看不到正确的结果,但是关于第一个问题:
是的,long double
可以提高准确性,但也有其局限性。因此,如果您需要更高的精度,您必须实现自己的数据类型。。。(如评论中所述)
第二个问题
您可以在limits.h
#include <limits.h>
printf("The minimum value of LONG = %ld\n", LONG_MIN);
printf("The maximum value of LONG = %ld\n", LONG_MAX);
#包括
printf(“LONG=%ld\n”的最小值,LONG\u MIN);
printf(“LONG=%ld\n”的最大值,LONG\u MAX);
使用数组,并滚动您自己的浮点运算(这样,只要您有足够的内存,您就可以达到您想要的任何精度)警告:非常慢回答您的问题吗@jwdonahue似乎不是一个复制品。你提到的一个是关于没有返回正确的值,而这个是关于不够精确。它们是完全不同的问题,有完全不同的解决方案考虑a,它可以给你你所需要的精度。计算级数的正确方法是a)递增计算项,B)从最小的项开始添加项。递增意味着如果您知道术语[k]
,则术语[k+1]=术语[k]*(-x)/(k+1)
。从最小到最大的相加意味着将这些项存储在一个数组中,直到计算出最小项为止。谢谢@lx76。那肯定会对我有帮助的!:-)
#include <limits.h>
printf("The minimum value of LONG = %ld\n", LONG_MIN);
printf("The maximum value of LONG = %ld\n", LONG_MAX);