【C#食谱】【风味小吃】菜单1: 判断分数和小数之间是否近似相等
2008-01-12 21:27
465 查看
说明:在看C# CookBook,英文版的,一方面是想自己边看边能够更好的理解,另一方面是想借翻译,也提高下自己的英语水平。 以后想基本上每两天翻译一篇。
至于,适不适合放在首页,我也不是很清楚,如果不合适,还请见谅。 dudu留情:我只是想先测试下,这个系列应不应该在首页出现。
问题:
你需要比较一个分数和一个double或float类型的值,去决定它们是否近似相等。以1/6和0.16666667比较的结果为例。除了0.16666667只精确到小数点后8位,而1/6在小数点后精确到该类型小数最大可能的长度之外,它们看上去是相等的。
解决方法:
要在分数和小数之间比较它们是否近似相等,需要确定它们之间的差是否在允许的范围内:
using System;
// 用System.Double.Epsilon的值重载函数
public static bool IsApproximatelyEqualTo(double numerator,
double denominator,
double dblValue)
// 重载函数,使得可以自己确定一个误差值,而不是用
// System.Double.Epsilon
public static bool IsApproximatelyEqualTo(double numerator,
double denominator,
double dblValue,
double epsilon)
bool Approximate = Class1.IsApproximatelyEqualTo(1, 7, .142857, .0000001);
// Approximate == false
为第三个参数增加一个小数位后,这个函数反映出这个更精确的值就是你需要的1/7的合适的近似值:
bool Approximate = Class1.IsApproximatelyEqualTo(1, 7, .1428571, .0000001);
// Approximate == true
其他参考:
查看MSDN文档中关于Double.Epsilon Field和Single.Epsilon Field主题的相关内容。
至于,适不适合放在首页,我也不是很清楚,如果不合适,还请见谅。 dudu留情:我只是想先测试下,这个系列应不应该在首页出现。
问题:
你需要比较一个分数和一个double或float类型的值,去决定它们是否近似相等。以1/6和0.16666667比较的结果为例。除了0.16666667只精确到小数点后8位,而1/6在小数点后精确到该类型小数最大可能的长度之外,它们看上去是相等的。
解决方法:
要在分数和小数之间比较它们是否近似相等,需要确定它们之间的差是否在允许的范围内:
using System;
// 用System.Double.Epsilon的值重载函数
public static bool IsApproximatelyEqualTo(double numerator,
double denominator,
double dblValue)
// 重载函数,使得可以自己确定一个误差值,而不是用
// System.Double.Epsilon
public static bool IsApproximatelyEqualTo(double numerator,
double denominator,
double dblValue,
double epsilon)
bool Approximate = Class1.IsApproximatelyEqualTo(1, 7, .142857, .0000001);
// Approximate == false
为第三个参数增加一个小数位后,这个函数反映出这个更精确的值就是你需要的1/7的合适的近似值:
bool Approximate = Class1.IsApproximatelyEqualTo(1, 7, .1428571, .0000001);
// Approximate == true
其他参考:
查看MSDN文档中关于Double.Epsilon Field和Single.Epsilon Field主题的相关内容。
相关文章推荐
- 【C#食谱】【风味小吃】菜单6:获取一个数字的高字位值或低字位值
- C#先把数值类型转换为带千分位的字符串,再判断是否带小数,如果带小数,保存两位小数,不带,不保留。
- 关于判断C#的两个string是否相等的问题
- c# 相等判断之间的关系
- C#,判断字符,是否是数字或小数(利用正则表达式)
- 【C#食谱】【风味小吃】菜单2:角度转换为弧度
- C# 判断对象是否相等
- C#中??和?分别是什么意思? 在ASP.NET开发中一些单词的标准缩写 C#SESSION丢失问题的解决办法 在C#中INTERFACE与ABSTRACT CLASS的区别 SQL命令语句小技巧 JQUERY判断CHECKBOX是否选中三种方法 JS中!=、==、!==、===的用法和区别 在对象比较中,对象相等和对象一致分别指的是什么?
- C#判断是否相等
- 通常在C#中判断两个日期是否相等可使用DateTime的方法
- C# 判断两个集合(List)是否相等
- C#判断两个对象是否相等
- 判断一个分数是否为无限循环小数
- 【C#食谱】【风味小吃】菜单7:把其他进制的数转换为十进制
- 判断一个分数是否是无限循环的小数.
- Java判断2个List之间是否相等。
- C#判断两个字符串是否相等的方法
- 【C#食谱】【风味小吃】菜单4 对各种数据类型运用位运算符求补运算符
- C#判断字符串是否是满足指定位数的小数或整数
- 判断字符串是否包含中文,过滤字符串中是否是整数或小数