解析时出现Java.lang.NumberFormatException错误,为double值

时间:2017-07-19 07:56:58

标签: java numberformatexception

我有一个需要格式化的双值

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {

        headerView?.detailPhotoStory.text = PhotoItemArraySelected[0].photoStory
        headerView?.setNeedsLayout()
        headerView?.layoutIfNeeded()

        headerHeight = 380
        headerHeight += (headerView?.detailPhotoStory.frame.height)!

        collectionView.reloadData()
        collectionView.scrollToItem(at: IndexPath(row: 0, section: 0),
                                    at: .top,
                                    animated: true)
    }

我无法格式化它,因为它有","其中如何将其从NumberFormat dft = NumberFormat.getInstance(); dft.setMaximumFractionDigits(3); dft.setRoundingMode(RoundingMode.UP); Double n= Double.parseDouble(dft.format(xyz)); //1,733.211 中删除。

2 个答案:

答案 0 :(得分:1)

您需要使用parse类的NumberFormat方法来首先解析数字(如果您想要数字值),例如:

Number number = NumberFormat.getNumberInstance().parse("1,733.211");
System.out.println(number);

完成后,您可以对其进行格式化:

NumberFormat dft = NumberFormat.getInstance(); 
dft.setMaximumFractionDigits(3);
dft.setRoundingMode(RoundingMode.UP);
System.out.println(dft.format(number));

答案 1 :(得分:0)

假设xyz是一个String,你只想删除逗号:

Double n= Double.parseDouble(dft.format(xyz.replaceAll("[^0-9.]", "")));