回 帖 发 新 帖 刷新版面

主题:[讨论]在QB中有度分秒转换成十进制度的程序

在QB中有度分秒(DDD。MMSS)转换成十进制度的程序:
10 INPUT "X=";X
20 D=INT(X)
30 M=INT((X-D)*100)
40 S=INT((X-D-M/100)*1000000)/100
50 DEG=D+M/60+S/3600
60 PRINT "DEG=";DEG
70 END
为什么在转换下列数据会出错:1.30  2.30  3.30  25.30 0.01 1.01 2.01 3.01
25.30为25度30分,转换为以度为单位结果应为25.5度,但结果为25.5111误差来源在哪?
错出在哪?求各位高手回答!

回复列表 (共5个回复)

沙发

有这么计量度的吗?1.30 后面用什么单位呢?好象应该写成1.5度啊吧

板凳

111.3025表示为111度30分25秒
25.30(25度30分)转换为以度为单位应该是25.5度,但结果为25.5111度,不知道误差来源,请指教!

3 楼

错误大概来自于QB本身的精度问题,
例如:
INPUT "ddd.mmss", x
d = INT(x)
PRINT d
x = x - d
PRINT x

运行是输入30.2显示如下
ddd.mmss30.2
30
.2000008

用字符串来处理

CLS

INPUT x$
x$ = LTRIM$(RTRIM$(x$))    '清空x$两端的空格

place = INSTR(1, x$, ".")
IF place = 0 THEN place = LEN(x$)   '找出小数点的位置

d = VAL(LEFT$(x$, place))
m = VAL(MID$(x$, place + 1, 2))
s = VAL(MID$(x$, place + 3, 2))

reg = d + m / 60 + s / 3600
PRINT reg

4 楼

谢谢你
但为什么4.30转换结果是正确的为4.5度,不明白?

5 楼

我也认为是本身精度问题[em12]

我来回复

您尚未登录,请登录后再回复。点此登录或注册