2

我们想在 vb.net 中使用 JavaScript 在表格中显示动态值。我们已将变量定义为 var rValue

表达式是rValue = parseFloat(594 * 0.1);

我们得到了 putput,59.400000000000006但我们需要输出,59.4请让我们知道如何做到这一点。

PS 我们不想使用tofixed()它,因为它会为所有没有小数点的值返回两位小数。

4

6 回答 6

1

使用 rValue = parseFloat(594 * 0.1).toFixed(2),如果小数为 .00,则删除小数位。

例如

var num=rValue.split('.')[1];
        if(num==='00')
        {
         rValue=rValue.split('.')[0];
        }
于 2014-04-14T06:51:24.097 回答
1

尝试这个:

var rValue = parseFloat(594 * .2);
alert(rValue.toFixed(2).replace(".00",""))

这是演示

于 2014-04-14T06:53:04.137 回答
1

使用本机toPrecision()方法:

 <script>   
 var rValue = new Number(59.400000000000006 );
 var n = rValue.toPrecision(3);
 //n will be 59.4 
 </script>
于 2014-04-14T06:49:14.057 回答
0

简单的箭头功能:

const truncate = (number,decimals) =>
Math.trunc(number*Math.pow(10,decimals)) / Math.pow(10,decimals)
于 2022-01-27T17:11:27.850 回答
0

问题出在0.1 无法用 binary 表示。它实际上有无限个小数,因此使用这个数字的每个算术运算都会导致输出是近似的。

您可以选择使用除以浮点数 10 来代替:

var rValue = 594 / 10.0;

或者,如果这种截断是一个反复出现的问题,您可以编写一个实用函数:

/**
* @param {Number} value
* @param {Integer} precision
* @returns {Number}
*/
var truncateFloat = function(value, precision) {
    // Ensure the multiplier is a float
    var pMult = 1.0;
    while (precision--) {
        pMult *= 10;
    }
    // Multiply the value by the precision multiplier, 
    // convert it to int (discarding any pesky leftover decimals) 
    // and float-divide it by the same multiplier
    return ((value * pMult) >> 0) / pMult;
}

希望这有所帮助!:)

于 2015-11-19T11:55:38.633 回答
-2

像这样 ?

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim rValue As String = 56.40000000006
    Dim charVal() As Char = rValue.ToCharArray()
    Dim getVal As String = Nothing
   '----------Change for decimal places---------
    Dim decimalPlaces As Integer = 2
    Dim decimalPlace As Integer = -1
    Dim realValue As Double = 0
    For Each Val As Char In charVal

        If Char.IsDigit(Val) Then
            getVal &= Val
        Else
            getVal &= "."
        End If

        If getVal.Contains(".") Then
            decimalPlace += 1
        End If

        If decimalPlace = decimalPlaces Then
            Exit For
        End If
    Next
    MsgBox(realValue)
End Sub
于 2014-04-14T07:08:12.397 回答