2013-06-11 6 views
0

와 라운드 트립 더블 얻기 나는 몇 가지 조건을 존중 문자열에 두 번 변환해야합니다만 3 소수와 +/- 기호

  • 나는 둥근 값을하지 않으려는
  • 만 3 쉼표 뒤의 숫자
  • + 또는 - 기호와 시작.
  • : 내 두 값이 0.257894214 경우 (추가 0.000 0 이중 값이되는 경우) (가장 중요하지 않음)

그래서, 나는 문자열이 원하는 : +0.257.

나는 몇 줄의 코드 테스트 : 나는 해결책 가까이 느낄

Double num = 0.257894214; 
Double num2 = -0.257894214; 
Double num3 = 0; 

num.ToString("R") // 0,257894214 
num2.ToString("R") // -0,257894214 
num3.ToString("R") // 0 

String.Format("{0:0.000}",num)  // 0,258 
String.Format("{0:0.000}",num2)  // -0,258 
String.Format("{0:0.000}",num3)  // 0,000 
num.ToString("0.000")    // 0,258 
num2.ToString("0.000")    // -0,258 
num3.ToString("0.000")    // 0,000 

num.ToString("+0.000;-0.000;0.000")    // +0,258 
num2.ToString("+0.000;-0.000;0.000")   // -0,258 
num3.ToString("+0.000;-0.000;0.000")   // 0,000 
String.Format("{0:+0.000;-0.000;0.000}",num) // +0,258 
String.Format("{0:+0.000;-0.000;0.000}",num2) // -0,258 
String.Format("{0:+0.000;-0.000;0.000}",num3) // 0,000 

을하지만 난 이제 완전히 잃었어요! 내가 명확했다 희망 :(

... 내가 찾고 있어요 무엇

마지막 줄은 정말 근처에 있습니다 ...하지만 두 값은 반올림됩니다. :) 사전에 감사합니다.

오신 것을 환영합니다!

+2

빠른 & 더러운 경우 충분 : 4 자리 10 진수 형식에 대한 형식 및 문자열 작업으로 마지막 숫자를 스트립 ... – DarkSquirrel42

답변

1

나는 당신이 게시물이라는 것을 이해했다면, 말하고 싶은 것은 라운드가 아닌 소수 제 3 자로 자르고 싶다는 것입니다.

먼저 함수를

// truncates to 3 decimal places 
static double Truncate(double num) 
{ 
    return Math.Truncate(num * 1000)/1000.0; 
} 

을 정의 이제이 작동해야

x = String.Format("{0:+0.000;-0.000;0.000}", Truncate(num)); 
y = String.Format("{0:+0.000;-0.000;0.000}", Truncate(num2)); 
z = String.Format("{0:+0.000;-0.000;0.000}", Truncate(num3)); 

시도 : 그래서 당신은 0.257, -0.257과 0.000

이이해야 할 다음과 같은 값을 얻을 양수와 음수 모두.

+0

그것은 내가 무엇을 검색했는지 100 %에서 작동합니다! :) 고마워요! R 형식으로 재생하는 것이 가능하다고 생각했지만, 본 것처럼 첫 번째 작업은 Double to Truncate 작업입니다. 좋은 생각, 나는 그것을 전부 생각하지 않았다! :) –