C# float/double 减 float/double 等 (X.xxxxxxxxxxxxxE-07)(黑盒测试)
2023-12-24 20:40:19
问题
因为没有深究原理,所有只进行了“黑盒测试”
黑盒测试结论:
问题 | 操作 | 结论 |
float/double运算 | 进过一系列的运算后 | 大概率? != 0.0? , 而是等于0.00000000000xxxx |
等于X.xxxxxxxx一串数字的时候 | 不影响下一步继续使用 | |
当需要显示float/double的时候 | 进行一次 “保留N位运算” Mach.Round(float, n) String.Format("{0:F2}", 1.0f); //? 结果 1.00 |
代码
void ChangeFormat()
{
double aaa = 2.2f;
double bbb = 2.0f;
double ccc = aaa - bbb;
// double ddd = ccc - 0.2d;
// double ddd = 2.2f - 2.0f - 0.2d; // 这个与上方的结果一样
double ddd = 2.2d - 2.0d - 0.2; // 这个与上方的结果一样
string str1 = String.Format("{0:F2}", ddd);
Debug.Log(ddd); // 结果 1.66533453693773E-16
Debug.Log(ddd + 0.001d); // 结果 0.00100000000000017
Debug.Log(Math.Round(ddd, 2)); // 结果 0
Debug.Log((int)ddd); // 结果 0
Debug.Log(str1); // 结果 0.00
// 测试:4.76837158092103E-07 是否大于 0
if (ddd > 0)
{
Debug.Log("得到: 1.66533453693773E-16 > 0");
}
// ddd + 0.001f 为什么 +0.001
// 因为:经过测试得 1.66533453693773E-16 == 0
// 所以:+0.001, 还原显示数值 (一般只要小数两位)
}
输出结果
文章来源:https://blog.csdn.net/qq_30926011/article/details/135185628
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!