亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用指數表示法解析復數 Java

使用指數表示法解析復數 Java

慕桂英3389331 2023-11-01 20:59:30
嘗試從 csv 文件讀取一些復數。我有一個字符串并且正在嘗試ComplexFormat cf = new ComplexFormat(); cf.parse(entry)此代碼會導致以下錯誤org.apache.commons.math3.exception.MathParseException: illegal state: string "-7.5212e-06+3.4298e-06i" unparseable (from position 7) as an object of type org.apache.commons.math3.complex.Complex我假設我需要使用 NumberFormat 創建一個新的復雜格式,該格式允許指數表示法,因為cf.getRealFormat().useExponentialNotation = false但是我不確定如何創建這樣的 NumberFormat。否則我正在考慮使用 Double.parseDouble 但這需要我考慮正確的正則表達式。
查看完整描述

1 回答

?
縹緲止盈

TA貢獻2041條經驗 獲得超4個贊

您的數據似乎包含帶小 e 的科學計數法。令人煩惱的是,該庫不會攔截,但簡單的替換會對您的情況有所幫助。


String entry = "-7.5212e-06+3.4298e-06i";

ComplexFormat cf = new ComplexFormat();

Complex c = cf.parse(entry.replace('e', 'E'));

System.out.println(c);

//(-0.075212, 0.034298)

但請注意,如果您使用默認構造函數(如上所述),您的數字將被正確解析,但科學記數法將不再保留。如果你想保留符號,請使用 DecimalFormat:


DecimalFormatSymbols symbols = new DecimalFormatSymbols(Locale.US);

DecimalFormat formatter = new DecimalFormat("##.####E0", symbols);

ComplexFormat cfWithE = new ComplexFormat(formatter);

Complex c2 = cfWithE.parse(entry.replace('e', 'E'));

System.out.println(c2);

//(-7.5212E-6, 3.4298E-6)


查看完整回答
反對 回復 2023-11-01
  • 1 回答
  • 0 關注
  • 127 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號