VB.Net双重比较

41686d6564

在向其中添加一些值之后,我遇到了一个带有double变量的怪异案例。多次将(0.2)加到双变量中时会发生问题-我认为仅在(0.2)中会发生-例如:考虑以下代码:

Dim i As Double = 2
i = i + 0.2
MsgBox(i) '2.2
MsgBox(i > 2.2) 'False >> No problem

但是,如果我多次添加(0.2):

Dim i As Double = 2
i = i + 0.2
i = i + 0.2
MsgBox(i) '2.4
Msgbox(i > 2.4) 'True >> !!!!

Dim i As Double = 2
For x As Integer = 1 to 5
    i = i + 0.2
Next
MsgBox(i) '3
Msgbox(i > 3) 'True >> !!!!

我用其他值尝试了相同的代码,但没有得到这个问题:

Dim i As Double = 2
i = i + 0.5
i = i + 0.5
MsgBox(i) '3
Msgbox(i > 3) 'False >> No problem

有人对此有解释吗?谢谢

左撇子

如果使用示例3,您将看到结果实际上是3.0000000000000009

问题在于双精度取整。

如果更改数据类型十进制,则问题已解决:

Sub Main()

    Dim i As Decimal = 2

    For x As Integer = 1 To 5
        i = i + 0.2
    Next
    MsgBox(i) '3
    MsgBox(i > 3) 'False >> No problem

End Sub

这是关于C#的,但是我想vb.net也是一样。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何修复VB.Net上DataGridView上的双重输出

来自分类Dev

VB.net如何比较年份差异

来自分类Dev

VB.Net中的文件比较

来自分类Dev

如何在Vb.Net中比较nullable?

来自分类Dev

如何与VB.Net中的常量集合进行比较?

来自分类Dev

Vb.net如何比较大文本文件

来自分类Dev

比较给定数字的小数VB.NET

来自分类Dev

如何比较整个多维数组?-WinForms VB.NET

来自分类Dev

比较vb.net中的字符串日期

来自分类Dev

如何比较字符串和格式?vb.net

来自分类Dev

VB.NET如何比较字符串日期

来自分类Dev

比较-VB类中的列表

来自分类Dev

VB.NET和VB之间的区别

来自分类Dev

VB NET,累积损坏

来自分类Dev

VB Net IsDBNull问题

来自分类Dev

Vb.net-FolderBrowserDialog

来自分类Dev

VB.NET FolderBrowserDialog

来自分类Dev

Vb.Net-UpdateDriverForPlugAndPlayDevices

来自分类Dev

Vb.net-FolderBrowserDialog

来自分类Dev

VB.NET VbNewLine

来自分类Dev

VB.NET与多态

来自分类Dev

将控制台行与VB.NET中的字符串进行比较

来自分类Dev

强制VB.NET生成与C#相同的字符串比较表达式?

来自分类Dev

如何在ASP.NET VB中比较两个字符串

来自分类Dev

我如何在vb.net中比较字节数组

来自分类Dev

将C#转换为vb.net。与比较运算符和接口做什么?

来自分类Dev

在比较它们在VB Net中不起作用之前检查数字是否为整数

来自分类Dev

比较2个char值vb.net时出现未处理的异常

来自分类Dev

如何将组合框值与列表框中的项目进行比较-vb.net