- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我确信这与我对行为的理解有关,而不是 parseFloat 方面的任何不一致操作,但请耐心等待...
如果我输入格式为“IDCODE: (3.5)” 其中IDCODE可能是几个不同的预定义字符串,并且保证始终有括号,并且括号之间也保证有数字
我正在尝试将所有输入消化到 IDCODE 桶中并对值求和,因此需要获取括号之间的任何内容并将其转换为 float 以便我可以对其求和
为什么以下不起作用?
Float tot = 0;
String idCode = "";
while( !input.isEmpty() )
{
idCode = GetIdCode(input);
tot = tot + Float.parseFloat( input.substring(
input.indexOf( "(", input.indexOf( idCode ) ) + 1,
input.indexOf( ")", input.indexOf( idCode ) ) ) );
}
(抛出数字格式异常)
下面的代码在哪里工作
Float tot = 0;
String idCode = "";
while( !input.isEmpty() )
{
idCode = GetIdCode(input);
String temp = input.substring(
input.indexOf( "(", input.indexOf( idCode ) ) + 1,
input.indexOf( ")", input.indexOf( idCode ) ) );
tot = tot + Float.parseFloat( temp );
}
这对我来说似乎很奇怪 - 保存到临时变量中有什么不同?
最佳答案
当您的代码无法正常工作时,就该进行一些老式的调试了。与 SO 上的一百个人的建议相比,您将从中获得更多的好处,除非建议当然是进行一些好的老式调试 :-)
将您的非工作人员更改为:
while( !input.isEmpty() )
{
idCode = GetIdCode(input);
// New lines below.
System.out.println ("input = [" + input + "]");
System.out.println ("idCode = [" + idCode + "]");
int i1 = input.indexOf(idCode);
System.out.println ("offst1 = [" + i1 + "]");
int i2 = input.indexOf("(",i1);
System.out.println ("offst2 = [" + i2 + "]");
int i3 = input.indexOf(")",i1);
System.out.println ("offst3 = [" + i3 + "]");
String s1 = input.substring(i2+1,i3);
System.out.println ("strng1 = [" + s1 + "]");
float f1 = Float.parseFloat(s1);
System.out.println ("float1 = [" + f1 + "]");
// New lines above.
tot = tot + Float.parseFloat( input.substring(
input.indexOf( "(", input.indexOf( idCode ) ) + 1,
input.indexOf( ")", input.indexOf( idCode ) ) ) );
然后让我们知道输出是什么,尽管您很有可能会自己发现问题。
那些 println
语句应该几乎涵盖所有可能的问题,如果它确实在该代码中的话。
例如下面的项目:
public class xx {
public static void main(String args[]) {
String idCode = "CT";
String input = "fgdfgdg CT: (2.57)";
System.out.println ("input = [" + input + "]");
System.out.println ("idCode = [" + idCode + "]");
int i1 = input.indexOf(idCode);
System.out.println ("offst1 = [" + i1 + "]");
int i2 = input.indexOf("(",i1);
System.out.println ("offst2 = [" + i2 + "]");
int i3 = input.indexOf(")",i1);
System.out.println ("offst3 = [" + i3 + "]");
String s1 = input.substring(i2+1,i3);
System.out.println ("strng1 = [" + s1 + "]");
float f1 = Float.parseFloat(s1);
System.out.println ("float1 = [" + f1 + "]");
System.out.println ("full = [" + Float.parseFloat( input.substring(
input.indexOf( "(", input.indexOf( idCode ) ) + 1,
input.indexOf( ")", input.indexOf( idCode ) ) )) + "]");
}
}
给我:
input = [fgdfgdg CT: (2.57)]
idCode = [CT]
offst1 = [8]
offst2 = [12]
offst3 = [17]
strng1 = [2.57]
float1 = [2.57]
full = [2.57]
特别是,最后一行的打印对我来说没问题,这一事实让我相信您显示的代码没有任何问题。我认为问题出在其他地方。
关于Java parseFloat 似乎表现不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1794939/
Number.parseFloat() 和 parseFloat() 有什么区别?一个比另一个好吗? 最佳答案 它们的功能完全相同。他们不仅行为相同。它们是完全相同的函数对象。 为了扩展这一点,Num
我很抱歉,但我需要帮助:( 我尝试将字符串转换为十进制并且它有效,但我有一些问题: number = document.getElementById("totalcost").innerHTM
如何在名为 parseFloat 的 Angular 工厂函数内访问 parseFloat? angular .module('myApp') .factory('mathServic
我从客户的内部 API 获取了一个庞大的数据集。它将包含一堆价格的数字数据,例如:31.23 美元。他把它们作为 {"spend":"21.23"} 给了我,这很好,但我担心在 1000 多个项目并在
这个问题已经有答案了: How to round to at most 2 decimal places, if necessary (91 个回答) 已关闭 7 年前。 我已经阅读了一些示例,了解如
我有一个使用 .toLocaleString() 格式化的输入字段。 然后我需要对该值使用 parseFloat() 将其转换为数字。 要在美国语言环境中执行此操作,我只需在执行 parseFloat
我有以下情况,我正在使用jquery,我需要总结表单上的一些字段。我在小计字段和总计字段中发现了 NaN 错误。我已尽一切可能避免此类错误,我只需要此字段上的 SUM 。我的表单中的所有内容都工作正常
我有一个类别页面,其中显示不同的产品。在每个产品中,我都有一个部分显示原价、保存价格 和新价格。只是为了说明原价的结构: Was £
我有一个文本框,我需要将一个 float 值传递给 api。 现在当我在文本框中输入值“18.575”或“18.09483”时一切正常。 但如果值为“18.000”,则无法正常工作。我知道 18.00
好的,所以我的代码工作正常,但是当为 #chance 输入一个小数,即 60.1、60.2、60.3 等时,它会搞砸利润和支付。 例如:60%为机会输入,1为赌注。它返回 1.65 的工资和 0.65
我正在使用 jQuery 从网页中提取一些数据,它作为一个数组返回,其中包含我尝试添加的以下值 (.5、.25、1.25、3.75)。这是我的代码片段: var th = 0; for (th
我正在学习 Javascript。 在 javascript 中有 parseFloat 和 parseInt 函数是什么意思,事实上,Javascript 不区分 float 和整数——只有数字数据
我正在尝试解析数组中的值,然后将它们添加到图表中。问题是我在输出中得到了一些意想不到的数字。我遍历并填充我的数组。在按钮上单击我循环遍历并解析数据并将其放入另一个数组以传递给图表系列。这在理论上可行,
这个问题在这里已经有了答案: Is floating point math broken? (31 个答案) 关闭 9 年前。 我正在尝试将“9999999999999099”转换为 javascr
我正在从事一个需要“提示框”计算系统的项目。正如您在代码片段中看到的那样,它没有像我预期的那样工作。我该如何解决这个问题? $("select[name='tip']").on('change',fu
我需要验证文本框条目。它应该只允许整数,因为如果用户在绑定(bind)期间在此字段中输入字符,entityframework 将失败。 这里是问题: 当用户在此字段中输入 10-d 时,parseFl
在我的代码中,我有这个: function addNumbers() { var collect = parseFloat(document.getElementBy
我确信这与我对行为的理解有关,而不是 parseFloat 方面的任何不一致操作,但请耐心等待... 如果我输入格式为“IDCODE: (3.5)” 其中IDCODE可能是几个不同的预定义字符串,并且
我在 HTML 表单中有一些输入,使用 javascript 在更改时自动填充输入 问题是下面的代码显示了小数,更长的小数像这样 42880.34623465464356435634 代码是: the
我在转换输入数字时遇到问题,当插入 1,050000 时,它给我的结果不是 1.050000,而是 1.000000。 parseFloat("1,050000").toFixed(6).toStri
我是一名优秀的程序员,十分优秀!