機(jī)械社區(qū)

 找回密碼
 注冊(cè)會(huì)員

QQ登錄

只需一步,快速開(kāi)始

搜索
樓主: 昨日明月
打印 上一主題 下一主題

求解一個(gè)C語(yǔ)言程序功能是每隔6°18′54″就增加6°18′54″并輸出結(jié)果的程序問(wèn)題。

[復(fù)制鏈接]
11#
發(fā)表于 2013-9-14 23:11:39 | 只看該作者
本帖最后由 逍遙處士 于 2013-9-14 23:35 編輯
+ u0 a% D. x) \' e* R6 p# I$ {9 x6 J% |* Y% M

0 f' f3 v( P8 r9 r+ K
+ O9 w: p7 t  Q4 e這是用MathCAD做的計(jì)算,程序跟一樓一樣,可見(jiàn)第5個(gè)也是29,就這來(lái)看樓主的程序可能有缺陷。
% D* K; U7 ^+ W3 @6 I假如齒數(shù)為57,則360*3600/57不能整除,問(wèn)題是否出在這兒?
! w: \, `" Y7 b9 g" e" Y  ]% w
9 S( g) d. D. z8 D7 f" Q) N假設(shè)所給齒數(shù)能整除的話,不妨只考慮將第一個(gè)角度依次翻倍,代碼如下:/ G" K; r/ o7 W7 _
7 [  z- Y+ ~6 Y0 w, C( U* W3 z0 w4 x
int a=0, b=0, c=0;
  {% B* s- A+ Y8 p) rwhile ( a<360 )
; X  H( V$ E! u- v* }{
! r4 H& T6 }; h0 }% q1 c% L9 s  `, F  c=(c+s)%60; if ( (c+s)>=60 )  b=(c+s)/60; 2 x* @2 Y0 K; F; g& F/ ]$ \
  b=(b+f)%60; if ( (b+f)>=60 )  a=(b+f)/60; : j( b6 I9 z. ?1 O
  a=a+j;
4 {: B) y+ C! C) k7 d  printf("%d°%d′%d″\n",a,b,c);, R7 }5 e( K% g% z5 H
}7 R+ ]' V- y' N( Q+ B

& A7 b* ^, w2 g5 K不妨試一試,看下結(jié)果。+ J; ]  f/ T0 M/ T6 I
1 G! z4 c. {: {

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒(méi)有帳號(hào)?注冊(cè)會(huì)員

x

點(diǎn)評(píng)

有點(diǎn)問(wèn)題,改正在17樓。  發(fā)表于 2013-9-15 10:40
12#
發(fā)表于 2013-9-15 08:20:37 | 只看該作者
隱含的升位運(yùn)算和強(qiáng)制降位運(yùn)算都會(huì)遭遇精度損失,如果取值范圍夠用的話,參與運(yùn)算的數(shù)據(jù)最好都統(tǒng)一為一種類型,比如全部為float型。
. n7 @% V5 b; w6 Y6 O" K
, ^/ @* G! n% D樓主程序中的
5 v8 q- x% q9 C$ l9 u8 E3 Q# g
8 z) n% j% q5 t0 t    int  m=22734;
5 n* _* z# J  j! C) l& n* ?& L- V8 n, h+ U* P
該值是做什么用的?該值如何來(lái)的?
13#
 樓主| 發(fā)表于 2013-9-15 08:22:37 | 只看該作者
fmdd 發(fā)表于 2013-9-15 08:20
& W* e' C- m5 S1 a8 W: a隱含的升位運(yùn)算和強(qiáng)制降位運(yùn)算都會(huì)遭遇精度損失,如果取值范圍夠用的話,參與運(yùn)算的數(shù)據(jù)最好都統(tǒng)一為一種類 ...

" m$ J' r( g) G取的值,可以變化的。是6°18′54″轉(zhuǎn)化為秒數(shù)5 P$ z6 j: y) _
14#
發(fā)表于 2013-9-15 08:31:22 | 只看該作者
本帖最后由 fmdd 于 2013-9-15 08:33 編輯
) `  j- o- L2 W) c
昨日明月 發(fā)表于 2013-9-15 08:22
0 e0 Z; }  ^& @! F; M5 d取的值,可以變化的。是6°18′54″轉(zhuǎn)化為秒數(shù)
, V! G) h! e1 }+ c) H4 D6 U
這個(gè)取值本身就損失了精度
! a  ]* a* n9 P. _
( J+ p/ h4 {+ t6°18′54″是指一個(gè)齒的轉(zhuǎn)角是么?這個(gè)值的精度不夠,計(jì)算出來(lái)是6.31578947……°& ~; Z- c0 X! q, n

, I% u6 W5 C/ O# b這里的精度損失造成了最后累加數(shù)值偏差。
1 E& T" l+ Q2 W% m
15#
 樓主| 發(fā)表于 2013-9-15 08:33:11 | 只看該作者
fmdd 發(fā)表于 2013-9-15 08:31
6 P- D9 ^0 C0 o! u9 l9 i7 t這個(gè)取值本身就損失了精度
+ ]( t4 {1 l# M8 K0 i
1 n2 L/ ?1 R3 x- N) g& h6°18′54″是指一個(gè)齒的轉(zhuǎn)角是么?這個(gè)值的精度不夠,計(jì)算出來(lái)是6.3157894 ...
% Y1 c4 P5 A$ r0 P' I2 n1 D6 W
老式銑床精度要求沒(méi)那么高。。。 達(dá)到秒數(shù)就夠了。。。. |6 V: N5 l  O% k& C  J, z; K
16#
 樓主| 發(fā)表于 2013-9-15 09:03:58 | 只看該作者
逍遙處士 發(fā)表于 2013-9-14 23:11 1 Q& }5 U, B# @" b2 B2 g) F- ^: a6 ]/ ?
這是用MathCAD做的計(jì)算,程序跟一樓一樣,可見(jiàn)第5個(gè)也是29,就這來(lái)看樓主的程序可能有缺陷。' h3 K( {$ y8 Q; A% V4 O! e
假如齒數(shù) ...

) g9 S* k( U( v按照逍遙前輩的代碼運(yùn)行還是有問(wèn)題呢?

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒(méi)有帳號(hào)?注冊(cè)會(huì)員

x

點(diǎn)評(píng)

搞錯(cuò)了。應(yīng)該把 if 語(yǔ)句放前面。  發(fā)表于 2013-9-15 10:40
17#
發(fā)表于 2013-9-15 10:39:52 | 只看該作者
這是一個(gè)很有意思的問(wèn)題。我也試了以下,結(jié)果當(dāng)i = 5的時(shí)候,c 確實(shí)等于29。為此,當(dāng)i = 5的時(shí)候,檢查 c 取整以后的余數(shù) =1 ,也是一個(gè)整數(shù)。它就是 c 所差的數(shù),由此,我就懷疑程序本身的內(nèi)部函數(shù)在處理“余數(shù)”的問(wèn)題?!為此,我把6°18′54″化成22734″的數(shù)值改成了22734.0001″,結(jié)果一切正常。這說(shuō)明你所編的程序并沒(méi)有錯(cuò)。請(qǐng)?jiān)囋嚳础?/td>
18#
發(fā)表于 2013-9-15 10:41:38 | 只看該作者
把那兩行改成這樣試一試:
; s/ h7 R& M3 a/ \" c5 X2 Vif ( (c+s)>=60 )  b=(c+s)/60; c=(c+s)%60;
. ]) V5 s- n0 z3 D, C: Cif ( (b+f)>=60 )  a=(b+f)/60;  b=(b+f)%60;
19#
 樓主| 發(fā)表于 2013-9-15 11:42:32 | 只看該作者
逍遙處士 發(fā)表于 2013-9-15 10:41 + N' R* D( F% R) F
把那兩行改成這樣試一試:
) b& M2 d- X$ @4 D; Hif ( (c+s)>=60 )  b=(c+s)/60; c=(c+s)%60;
& K3 H9 m- C. o' Qif ( (b+f)>=60 )  a=(b+f)/60;  ...
) ]4 w. }9 C7 Z9 f5 `# o, \- d
改后是這個(gè)結(jié)果,也不行。

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒(méi)有帳號(hào)?注冊(cè)會(huì)員

x
20#
發(fā)表于 2013-9-15 11:57:54 | 只看該作者
本帖最后由 逍遙處士 于 2013-9-15 12:00 編輯
0 Y! ~( w- l5 y5 w9 ?) {. U
昨日明月 發(fā)表于 2013-9-15 11:42 ' n* q& h7 N& k; f: M8 c3 l
改后是這個(gè)結(jié)果,也不行。

! e5 m. T5 [2 }0 ]: H$ o+ X) A, {
漏掉了一個(gè) 號(hào),哈哈!
; B. ^4 }% z' N: }  m吾寶刀未老也!
$ _) }- i0 c8 t8 `1 [6 h0 C* _, P/ u1 m
2 D& `) {, Z  i; M

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒(méi)有帳號(hào)?注冊(cè)會(huì)員

x

點(diǎn)評(píng)

三分寫(xiě),七分試。  發(fā)表于 2013-9-15 12:02
這次整對(duì)了。謝謝逍遙前輩。  發(fā)表于 2013-9-15 12:01

本版積分規(guī)則

小黑屋|手機(jī)版|Archiver|機(jī)械社區(qū) ( 京ICP備10217105號(hào)-1,京ICP證050210號(hào),浙公網(wǎng)安備33038202004372號(hào) )

GMT+8, 2024-11-19 16:43 , Processed in 0.057632 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回復(fù) 返回頂部 返回列表