c#-Math.Truncate(num)问题
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c#-Math.Truncate(num)问题,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含943字,纯文字阅读大概需要2分钟。
内容图文
![c#-Math.Truncate(num)问题](/upload/InfoBanner/zyjiaocheng/678/553ff1d607684f78bdcace8184686ebd.jpg)
正如问题所暗示的(更多声明令人遗憾),我在C#中使用math.truncate遇到问题.我想做的是说当一个数字的小数除以50等于0.4时,这样做:
double temp2 = 170;
temp2 = temp2 / 50; //this equals 3.4
temp2 -= Math.Truncate(temp2);
if (temp2 == 0.4)
{
Console.WriteLine("Hello");
}
但是,当我尝试执行此操作时,它对我不起作用,并且不确定为什么它不起作用,请问我是否可以让某人对此有所了解并朝正确的方向发展?
解决方法:
single和double是二进制浮点类型.这意味着它们不能精确表示许多十进制值(例如0.4).这会导致微妙的舍入误差,因此比较两个逻辑上应该表示相同值的双精度值可能会导致意外结果.
可以使用DoubleToInt64Bits方法进行经验验证:
BitConverter.DoubleToInt64Bits(temp2); // 4600877379321698712
BitConverter.DoubleToInt64Bits(0.4); // 4600877379321698714
将其更改为十进制,您将获得预期的结果:
decimal temp2 = 170;
temp2 = temp2 / 50; //this equals 3.4
temp2 -= Math.Truncate(temp2);
if (temp2 == 0.4m) // the m creates a decimal constant
{
Console.WriteLine("Hello");
}
内容总结
以上是互联网集市为您收集整理的c#-Math.Truncate(num)问题全部内容,希望文章能够帮你解决c#-Math.Truncate(num)问题所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。