获取MS Access中的小数部分

时间:2014-04-30 16:17:40

标签: sql ms-access

如何访问MS Access中号码的小数部分?更具体地说,我只想要小数点后的分量,但不包括小数点。这也必须适用于所有整数。我已经看到其他SQL引擎的答案,但他们不能在Access中工作。由于我实际工作的敏感性,我不能比这更具体。

例如,如果给出以下数字,则输入位于左侧,输出位于右侧。输出可以是文本或数字。

Source   Correct  Incorrect1  Incorrect2
10.0     0        0.0         .0
3.14159  14159    0.14159     .14159
45.65    65       0.65        .65
173.0    0        0.0         .0
143.15   15       0.15        .15

如果我使用C#,以下代码会给我我想要的内容:

private string getDecimalComponent(double input)
{
    String strInput = input.ToString();
    if (strInput.Contains('.'))
    {
        return strInput.Split('.')[1];
    }
    else
    {
        return "0";
    }
}

4 个答案:

答案 0 :(得分:1)

减去值的整数部分。

实施例: 4.25 - Int(4.25)= 0.25

或者,作为示例SQL表达式:

SELECT
    [myDecimalNumber],
    [myDecimalNumber] - Int([myDecimalNumber]) as [rightOfDecimal]
FROM tableA

答案 1 :(得分:0)

类似的东西:

       SELECT 3.14%1 AS mycolumn from mytable

答案 2 :(得分:0)

取决于具体情况。例如,如果这是在文本框中,您可以使用InStr查找小数,然后使用Mid()函数获取它后面的数字。如果它是算术方程的一部分,那么我将使用Int()函数并从另一个中减去一个数来获得差异。

如果您可以详细说明它的使用方式,以及在什么情况下,我可以编辑我的答案,为您提供更多细节。

编辑:了解更多信息后,试试这个:

Public Function GetParts(Temp1 as Double)

Temp2 = Int(Temp1) 
Temp3 = Mid(Temp1, InStr(Temp1, ".") + 1) 

MsgBox Temp2 
MsgBox Temp3 

End Function

答案 3 :(得分:0)

一种稳定的解决方案,它产生的字符串包含Double的小数位。

 
SELECT DecimalPlaces(MyColumn) FROM MyTable

其中上面的用户定义函数包含以下代码:

Function DecimalPlaces(ByVal value As Double) As String

  Dim intPartLen As String
  intPartLen = Len(CStr(CInt(Abs(value))))

  If Len(CStr(Abs(value))) > intPartLen Then
    DecimalPlaces = Mid(CStr(Abs(value)), intPartLen + 2)
  Else
    DecimalPlaces = "0"
  End If

End Function

它避免了常见错误,所以是

  • 与语言环境无关-与任何小数点分隔符一起使用(仅假定它是单个字符)

  • 保留精度-避免减法,仅从字符串表示中获取结果

注意:确实需要进行这些Abs()通话(提示:-0.1