Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

关于运用ACCESS怎么实现测量科学的数据修约?

1978  发表于:2010-07-03 13:22:57  
复制

根据测量方面的资料规定:数据处理后修约遵循的规则是四舍六入五看奇偶,即当要修约的数大于5,不管其前面的数是否为奇偶,均进1,当要修约的数小于5,不管其头面的数是否为奇偶,均舍去(这与数学上常归的四舍五入规定一致);当要修约的数等于5时,且其后没有数据,则其前面的数为偶,则舍去,其前面的数为奇数,则进1;当要修约的数等于5时,且其后有不为0的数据,不管其前面是否是奇偶数,均要进1;如果要保存的位数不够,修约后的数据用0补上。 如下数据,保留两位有效数据,按测量学规定,修约结果如下:

 

原数据     修约后的数据

5.116      5.12

5.125      5.12

5.115      5.12

5.1151     5.12

5.1251     5.13

5.1        5.10

 

在论坛上看到的自定义函数,都不能满足要求,请有人帮忙写一自定义函数,实现上述功能,在下感激不尽!

 

Top
煮江品茶 发表于:2010-07-03 13:27:41
有点意思

1978 发表于:2010-07-03 13:34:39
煮江品茶老师,可以按上述要求帮忙写一个自定义函数吗?

煮江品茶 发表于:2010-07-03 14:24:36

Function rdVal(val As Double, dec As Long) As Double
Dim num As Long
Dim n As Long
num = Int(val * 10 ^ (dec + 1)) - Int(val * 10 ^ dec) * 10
If num < 5 Or num > 5 Then
    rdVal = Round(val, dec)
Else
    If val * 10 ^ (dec + 1) - Int(val * 10 ^ (dec + 1)) < 1 / 10 ^ 6 Then
        n = Int(val * 10 ^ dec) - Int(val * 10 ^ (dec - 1)) * 10
        If n Mod 2 = 0 Then
            rdVal = Int(val * 10 ^ dec) / (10 ^ dec)
        Else
            rdVal = (Int(val * 10 ^ dec) + 1) / (10 ^ dec)
        End If
    Else
        rdVal = Round(val, dec)
    End If
End If

End Function



1978 发表于:2010-07-03 14:50:01

5.115修约小数点后两位数,用上面的函数结果是5.11,按测量学规则应该是5.12,而且,5.1结果是5.1,不是5.10

不过还是感谢煮江品茶老师.



煮江品茶 发表于:2010-07-03 14:51:19
1978 发表于:2010-07-03 14:59:12
谢谢,刚才我搞错了.

总记录:6篇  页次:1/1 9 1 :