我如何从文本字段中舍入一个值并将parseFloat结果包含在内?此应用程序基本上总结了单击时所有单选按钮的值,并在文本框中显示总和.
如果单选按钮值是一个整数,则下面的代码可以正常工作,但是如果我想在单选按钮上有浮点值,则总值将具有100.0000000679应该的时间100.任何提示将非常感谢.提前致谢.
function calcscore(){
var score = 0;
$(".calc:checked").each(function(){
score+=parseFloat($(this).val(),10);
});
$("input[name=openingsum]").val(score);
}
$().ready(function(){
$(".calc").change(function(){
calcscore();
});
});
Run Code Online (Sandbox Code Playgroud)
HTML代码:
<input class="calc" name="v2" type="radio" onclick="ver2(this);" value="1.6666666666666666666666666666667" />Yes
<input class="calc" name="v2" type="radio" onclick="ver2(this);" value="0" />No
Run Code Online (Sandbox Code Playgroud) 我建立了一个将紧凑数据字符串解析为JSON的系统.我使用19位数字来存储ID.不幸的是,任何大于17位的数字都会parseFloat()围绕最后几位数.
这会破坏整个数据字符串.我能解决这个问题吗?
例如8246295522085275215变成了8246295522085276000.为什么是这样?
我有一个简单的onChange,它接受用户的输入pareses并设置要渲染的状态.这是代码.
import React, { Component } from 'react';
import './App.css';
class App extends Component {
constructor() {
super();
this.state = {
random: {
foo: 0
}
}
}
onChange(e) {
let random = this.state.random;
random[e.target.name] = parseFloat(e.target.value);
this.setState({random});
}
render() {
return (
<div className="App">
<input onChange={this.onChange.bind(this)} type="text" name="foo" value={this.state.random.foo} />
</div>
);
}
}
export default App;
Run Code Online (Sandbox Code Playgroud)
我不明白的是我的小数点在哪里.我知道没有任何验证可以阻止用户输入字母,但这只是一个示例应用来测试我遇到的这个问题.当我输入小数点时,不会被渲染.我哪里错了?
在我的代码中,特定var的值可以来自许多不同的json源中的任何一个.对于其中一些源,有关的json元素将是一个字符串(例如"temp": "10.2"),而对于其他源,json元素将已经是一个float(例如"temp": 10.2).
如果我只是将json元素(来自任何来源)传递给a parseFloat(),即使它已经是一个浮点数,它是否有任何伤害(任何可能破坏)?它似乎工作; 我只是在思考未来或不同平台上的好/坏做法和可能的破坏.
谢谢.
如果我将字符串转换为如下的数字,是否有任何副作用..
var numb=str*1;
Run Code Online (Sandbox Code Playgroud)
如果我检查下面的代码,它说这是一个数字..
var str="123";
str=str*1;
if(!isNaN(str))
{
alert('Hello');
}
Run Code Online (Sandbox Code Playgroud)
如果使用此方法有任何疑虑,请告诉我.
我想测试一个字符串是否可以转换为float.我一直在尝试使用parseFloat来实现这一目标.
console.log(!isNaN(parseFloat("10000"))); // should return true
console.log(!isNaN(parseFloat("100T0"))); // should return false (but doesn't)Run Code Online (Sandbox Code Playgroud)
事实证明,parseFloat只要碰到一个不是数字的字符就会停止读取字符串,然后返回它到目前为止所传递的任何字符.所以parseFloat("100T0")实际上是返回100而不是NaN.
什么是更好的js测试,看看一个字符串是否可以被转换为浮点数?
当我拉出我想要乘以的值时,它们就是字符串.所以我拉它们,将它们解析为浮点数(以保留小数位),然后将它们相乘.
LineTaxRate = parseFloat(myRate) * parseFloat(myQuantity) * parseFloat(myTaxRateRound);
Run Code Online (Sandbox Code Playgroud)
这对99%的发票有效,但我发现了一个非常奇怪的问题.
当它乘以:78*7*0.0725
Javascript返回:39.584999999999994
当你通常在计算器中进行数学运算时:39.585
完成所有操作后,我会使用.toFixed(2)获取该数字并将其四舍五入.
因为Javascript正在返回该数字,所以它没有四舍五入到所需的值:$ 39.59
我尝试了Math.round()总数,但我仍然得到相同的数字.
我想过将数字四舍五入到小数点后三位,但这对我来说似乎很笨拙.
我到处搜索,我看到的是人们提到parseFloat失去了它的精度,并使用.toFixed,但是在上面的例子中,这没有帮助.
这是我为重新创建问题而制作的测试脚本:
<script>
var num1 = parseFloat("78");
var num2 = parseFloat("7");
var num3 = parseFloat("0.0725");
var myTotal = num1 * num2 * num3;
var result = Math.round(myTotal*100)/100
alert(myTotal);
alert(myTotal.toFixed(2));
alert(result);
</script>
Run Code Online (Sandbox Code Playgroud) 我是javascript的新手,因为我目前在jQuery Mobile中创建一个跨平台的web应用程序,我已经使用了XML解析到HighCharts图的例子但是当我在我的系列数据中遇到null时它无法绘制任何一行并使它几乎成为一个散点图.
// push data points
$(series).find('data point').each(function(i, point) {
seriesOptions.data.push(
parseFloat($(point).text())
);
});
Run Code Online (Sandbox Code Playgroud)
我不知道如何编写一个if语句来检查它是否找到了null,如果是,如何告诉它使用它...任何人都可以帮助或指出我正确的方向,因为我喜欢我的图表到是正确的,而不是在我有一个零的位置放置零值.
我有一系列的对象......
var userObjects =[
{userName: bob,
age: "25",
gender: "m"
},
{userName: bill,
age: "15",
gender: "m"
},
{userName: jen,
age: "45",
gender: "f"
},
]
Run Code Online (Sandbox Code Playgroud)
现在我在我的HTML中有一个ng-repeat来迭代这个对象数组.我希望它按年龄排序:
<tr ng-repeat="user in userObjects | orderBy:-age">
Run Code Online (Sandbox Code Playgroud)
在我的JS中,我将我的年龄转换为汉堡......
data.forEach(function(user){
user.age= parseFloat(user.age);
}
Run Code Online (Sandbox Code Playgroud)
Angular不会按年龄排序,我希望看到......
bill, 15
bob, 25
jen, 45
Run Code Online (Sandbox Code Playgroud)
但相反,他们到处都是.我究竟做错了什么?
谢谢!
这是一个示例程序:
var a = parseFloat("86.69043189999999") + "<br>";
var b = parseFloat("86.79718199999999") + "<br>";
var n = a + b;
document.getElementById("demo").innerHTML = n;Run Code Online (Sandbox Code Playgroud)
<p id=demo></p>Run Code Online (Sandbox Code Playgroud)
这两个变量都具有完全相同的小数点,它仍然提供两种不同的输出:
86.6904319
86.79718199999999
Run Code Online (Sandbox Code Playgroud)
为什么会出现如此奇怪的行为?
parsefloat ×10
javascript ×9
numbers ×3
math ×2
angularjs ×1
highcharts ×1
jquery ×1
json ×1
nan ×1
null ×1
parseint ×1
parsing ×1
reactjs ×1
rounding ×1
setstate ×1
sql-order-by ×1
string ×1