我们想在 vb.net 中使用 JavaScript 在表格中显示动态值。我们已将变量定义为 var rValue
。
表达式是rValue = parseFloat(594 * 0.1);
我们得到了 putput,59.400000000000006
但我们需要输出,59.4
请让我们知道如何做到这一点。
PS 我们不想使用tofixed()
它,因为它会为所有没有小数点的值返回两位小数。
我们想在 vb.net 中使用 JavaScript 在表格中显示动态值。我们已将变量定义为 var rValue
。
表达式是rValue = parseFloat(594 * 0.1);
我们得到了 putput,59.400000000000006
但我们需要输出,59.4
请让我们知道如何做到这一点。
PS 我们不想使用tofixed()
它,因为它会为所有没有小数点的值返回两位小数。
使用 rValue = parseFloat(594 * 0.1).toFixed(2)
,如果小数为 .00,则删除小数位。
例如
var num=rValue.split('.')[1];
if(num==='00')
{
rValue=rValue.split('.')[0];
}
使用本机toPrecision()
方法:
<script>
var rValue = new Number(59.400000000000006 );
var n = rValue.toPrecision(3);
//n will be 59.4
</script>
简单的箭头功能:
const truncate = (number,decimals) =>
Math.trunc(number*Math.pow(10,decimals)) / Math.pow(10,decimals)
问题出在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;
}
希望这有所帮助!:)
像这样 ?
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