求C语言小数精确计算

求C语言小数精确计算,第1张

你好,在埋卜编程中不要指望去得到一个精确的数字,而应该是顶一个误差范围(相对误差)。如 double eps = 0.000000001然后弯毕穗再把数字与 eps 比较。

if((68 - n)<eps)即认为 n = 68;。当数埋然,这是人工处理。如果想得到精确数字,可以用 Boost 库。

if(n==1)

有点问题,因为你没有给n赋初值,所以n的值不确定,也就是说可能为1,那该if语句就失效了。

另外,其实根本就没必要事先比较s1和s2的长度,模仿递增向量的合并方法,先计算长度相同的部分,之后计算剩余部分。

我用c++的string字符串写了一个凯缺毕,你参考下。

#include<iostream>

#include<string>

using

namespace

std

void

Reverse(string

&

str)

void

AddInt(string

&

c,

string

a,

string

b)

int

main()

{

string

a,

b,

c

cin

>>

a

>>

b

AddInt(c,

a,

b)

cout

<<

a

<<盯芹

"

+

"

cout

<<

b

<<

"

=

"

<<

endl

cout

<<

c

<<

endl

system("pause")

return

0

}

void

Reverse(string

&

str)

{

int

left,

right

left

=

0

right

=

str.size()-1

while

(left

<

right)

{

char

ch

=

str[left]

str[left]

=

str[right]

str[right]

=

ch

left++

right--

}

}

void

AddInt(string

&

c,

string

a,

string

b)//模仿递增向量的合并方法

{

c.resize(0)

Reverse(a)

Reverse(b)

//逆序计算a+b,则从低位开始计算

int

i,

carry

i

=

carry

=

0

while

(i

<

a.size()

&&

i

<

b.size())

{

c

+=

(a[i]-'0'

+

b[i]-'0'

+

carry)

%

10

+

'0'

carry

=

(a[i]-'0'

+

b[i]-'0'

+

carry)

/

10

i++

}

while

(i

<

a.size())

{

c

+=

(a[i]-'0'

+

carry)

%

10

+

'0'

carry

=

(a[i]-'0'

+

carry)

/

10

i++

}

while

(i

<

b.size())

{

c

+=

(b[i]-'0'

+

carry)

%

10

+

'0'

carry

=

(b[i]-'0'

+

carry)

/

10

i++

}

while

(carry

>

0)/扮凳/计算进位部分

{

c

+=

carry

%

10

+

'0'

carry

/=

10

}

i

=

c.size()

-

1

while

(c[i]

==

'0')//消除多余的高位0

{

i--

}

c

=

c.substr(0,

i+1)

Reverse(c)

}

int multiply(int i)

{

if (i ==1 || i == 0) return 1

else return (i*multiply(i-1))

}

int _tmain(int argc, _TCHAR* argv[])

{

int i=1,j=1

double x

scanf("%lf",&x)

double result=1

while (1)

{

j = j*(-1)

int sum = multiply(i)

double k

k=pow(x,2*i)/sum

result =result+j*pow(x,2*i)/毁弊滚(double)sum

if (k<=0.00000001)

{printf("卜枯result = %.8f i = %d",result, i)

break}

i++

}

system("纤余pause")

return 0

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12398916.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存