지수 값을 수학적 표현식에서 두 배로 교체하십시오
-
21-12-2019 - |
문제
수학 표현식에 지수 값이 포함되어 있는지 확인하고 지수 값을 소수 값으로 바꿉니다.
입력 : "10993.657030812325 * 8.20681165367255E-05"
출력 : "10993.657030812325 * 0.0000820681165367255"
내가 직면하고있는 복잡성은 수학적 표현 내에서 그것을 감지하는 것입니다.
내가 가진 정규 표현식을 탐지하는 정규 표현식은 다음과 같습니다.
(([1-9][0-9]*\.?[0-9]*)|(\.[0-9]+))([Ee][+-]?[0-9]+)?
.
그러나 전체 표현식에 대해 true와 일치하는 것은이를 해결할 수있는 직접적인 방법이 있거나이를 해제하고 개별적으로 확인해야합니다.
해결책
제공, 그 지수가 너무 커지지 않습니다 (99 미만) 이 코드를 사용하십시오.
String formula = "10993.657030812325*8.20681165367255E-05";
String pattern = @"(([1-9][0-9]*\.?[0-9]*)|(\.[0-9]+))([Ee][+-]?[0-9]+)";
// Let's change format of each double precision in the formula:
String result = Regex.Replace(formula, pattern, (match) => {
// Simple formating; may be you should use more elaborated one
Double db = Double.Parse(match.Value, CultureInfo.InvariantCulture);
// Now, you should format out the Double db:
// First eliminate exponent (F99 is the maximum possible; F100 won't do)
String St = db.ToString("F99", CultureInfo.InvariantCulture);
// Next eliminate trailing '0'
if (St.IndexOf('.') >= 0)
St = St.TrimEnd('0');
return St.TrimEnd('.');
});
.
결과는 "10993.6570308123 * 0.0000820681165367255"
제휴하지 않습니다 StackOverflow