| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1634 人关注过本帖
标题:很菜菜菜.......菜菜菜菜菜.......菜菜菜菜........的问题........
只看楼主 加入收藏
anan021212
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2007-2-1
收藏
 问题点数:0 回复次数:10 
很菜菜菜.......菜菜菜菜菜.......菜菜菜菜........的问题........
问一个很菜很菜很菜的问题:

我用VFP写的一个程序当中,有下面两句:

.....
利息=(本金*利率*天数)/ 天数
实际利息=roun(利息,2)
.....


程序执行的结果会偶尔出现四舍五入不正确的情况。


比如,当利息是12294.3750时,实际利息却仍然是12294.37,没有四舍五入成正确的12294.38。


请高手帮忙分析一下原因,是不是哪的设置有问题?

谢谢


我补充一下:执行时,输入的数据分别是
本金 6,000,000.00
利率 8.19625%
天数 9
所以,就是这个式子  利息 = (6,000,000.00 * 0.0819625 * 9) / 360 = 12294.375  正好除尽了。
用round(利息,2),怎么结果还是12294.37? 而不是12294.38?


[[it] 本帖最后由 anan021212 于 2008-7-2 20:51 编辑 [/it]]

[[it] 本帖最后由 anan021212 于 2008-7-2 21:52 编辑 [/it]]
搜索更多相关主题的帖子: 菜菜 
2008-07-01 21:53
wzxc
Rank: 9Rank: 9Rank: 9
来 自:齐鲁大地
等 级:贵宾
威 望:39
帖 子:985
专家分:1296
注 册:2006-4-25
收藏
得分:0 
在dos年代遇到过这种情况,交互下可以,程序下有时就不进位。
不过在vfp下没有遇到过。
你的数试了,进位1229.38

利息=round((本金*利率)/ 天数,2)

认真看书学习,弄通Fox主义。
2008-07-01 22:25
anan021212
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2007-2-1
收藏
得分:0 
[bo][un]wzxc[/un] 在 2008-7-1 22:25 的发言:[/bo]

在dos年代遇到过这种情况,交互下可以,程序下有时就不进位。
不过在vfp下没有遇到过。
你的数试了,进位1229.38

利息=round((本金*利率)/ 天数,2)



试了好几次,都跟踪了,还是这样。还是1229.37
2008-07-01 22:33
Tiger5392
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:88
帖 子:2775
专家分:2237
注 册:2006-5-17
收藏
得分:0 
你看到的1229.3750可能是1229.37495-1229.37504之间的数。

感言:学以致用。 博客:http://www./blog/user14/65009/index.shtml email:Tiger5392@
2008-07-01 23:15
anan021212
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2007-2-1
收藏
得分:0 
[bo][un]Tiger5392[/un] 在 2008-7-1 23:15 的发言:[/bo]

你看到的1229.3750可能是1229.37495-1229.37504之间的数。




我补充一下:执行时,输入的数据分别是
本金 6,000,000.00
利率 8.19625%
天数 360
所以,就是这个式子  利息 = 6,000,000.00 * 0.0819625 / 360 = 12294.375  正好除尽了。

用round(利息,2),怎么结果还是12294.37? 而不是12294.38?

因为除尽了,所以不存在你说的情况。帮忙再分析一下,谢谢!
2008-07-02 20:52
anan021212
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2007-2-1
收藏
得分:0 
2008-07-02 21:53
Tiger5392
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:88
帖 子:2775
专家分:2237
注 册:2006-5-17
收藏
得分:0 
(1)
?6000000.00 * 0.0819625 / 360
这个结果是 1366.041666667

(2)
?round(12294.375,2)
这个结果为 12294.38

(3)
实在不行,改用
?int(表达式*100+0.5)/100

感言:学以致用。 博客:http://www./blog/user14/65009/index.shtml email:Tiger5392@
2008-07-03 17:04
wzxc
Rank: 9Rank: 9Rank: 9
来 自:齐鲁大地
等 级:贵宾
威 望:39
帖 子:985
专家分:1296
注 册:2006-4-25
收藏
得分:0 
?ROUND((6000000.00 * 0.0819625 * 9) / 360,1)
12294.4
?ROUND((6000000.00 * 0.0819625 * 9) / 360,2)
12294.37
?ROUND((6000000.00 * 0.0819625 * 9) / 360,3)
12294.375
?ROUND((6000000.00 * 0.819625/10 * 9) / 360,2)
12294.38
?ROUND((6000000.00 * 8.19625/100 * 9) / 360,2)
12294.38
楼主,改改算式吧!
不过问题很奇怪。

认真看书学习,弄通Fox主义。
2008-07-03 20:42
anan021212
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2007-2-1
收藏
得分:0 
我看到算式的不同了。
我改去。
谢谢WZXC!

不过真的不明白为什么会这么怪!

?ROUND((6000000.00 * 0.0819625 * 9) / 360,2)
12294.37

?ROUND((6000000.00 * 0.819625/10 * 9) / 360,2)
12294.38

?ROUND((6000000.00 * 8.19625/100 * 9) / 360,2)
12294.38

怪啊
2008-07-03 22:59
anan021212
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2007-2-1
收藏
得分:0 
大家来看看,为什么这样,表达式不同,竟然差1分

?ROUND((6000000.00 * 0.0819625 * 9) / 360,2)
12294.37

?ROUND((6000000.00 * 0.819625/10 * 9) / 360,2)
12294.38

?ROUND((6000000.00 * 8.19625/100 * 9) / 360,2)
12294.38

怪啊,为什么?
2008-07-03 23:01
快速回复:很菜菜菜.......菜菜菜菜菜.......菜菜菜菜........的问题........
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.048901 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved