如何检查结果是否为分数

4

如何在Visual Basic中检查两个数字相除的结果是否是小数

下面是我需要做的:

    Dim x As Integer = 12
    Dim y As Integer = 5

    If TypeOf x/y Is fraction Then
        ( do something )
    End If

感谢您的预先支持。

1
从技术上讲,整数除法总是会得到一个整数,它永远不会是一个分数。我猜你真正想要的,而且答案也在建议中提到了,是如何确定 y 是否是 x 的因数。 - cadrell0
1
@cadrell0 / 运算符返回完整的商,包括余数。而 \ 运算符仅返回整数部分。请参阅 http://msdn.microsoft.com/en-us/library/25bswc76(v=vs.80).aspx 获取引用 :) - RB.
即使问题很容易理解,术语有点误导。因为任何数字都可以写成分数形式a/b - kiss my armpit
8个回答

5

您能不能不对两个数字进行求模运算,然后判断结果是否非零,如果非零,则它是一个分数?


2
使用 Mod 函数,它将返回除法的余数。
Dim x As Integer = 12
Dim y As Integer = 5

If x Mod y > 0 Then
    MsgBox (x & " / " & y & " has a remainder, so it must be a fraction.")
End If

链接已失效。这是一个指向微软API参考网站上MOD的链接。https://learn.microsoft.com/en-us/dotnet/visual-basic/language-reference/operators/mod-operator - Nathan

2
使用 Mod 运算符来判断 x 是否可以整除 y:
If x Mod y > 0 Then
  ' There will be a fraction. do something
End If

1
If x Mod y = 0 ' Not a fraction
If x Mod y <> 0 ' Fraction

@MattWilko,好久不见了。谢谢你。已更新。 - Inisheer

1

1

我猜你所说的“Fraction”是指“非整数”,因为从技术上讲,任何数字都可以表示为分数...

一种典型的方法是使用模运算符:

If  x MOD y <> 0 Then
  ' x/y is a fraction
End If

0

这个解决方案更好,O(1)常数级别的。

If x Mod 1 = 0 Then ' Integer
If x Mod 1 <> 0 Then ' Float

0

.NET Framework提供了Math.DivRem,因此如果您真的希望同时确定被除数和余数:

Dim x As Integer = 12
Dim y As Integer = 5
Dim r As Integer
Dim d As Integer = Math.DivRem(x, y, r)

If r <> 0 Then
    ( do something )
End If

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接