2013-11-26 4 views
1

십진수가 네 번째 유효 숫자에 값이 있는지 확인하고 싶습니다.십진수 유효 숫자 확인

//3 Significant figures 
var val = 1.015; 

//4 Significant figures 
var val2 = 1.0155; 

네 번째 중요한 위치에 값이 있는지 테스트하려면 어떻게해야합니까?

네 번째 위치에 0이 아닌 값이 있는지에 따라 3 자리 또는 4 자리의 소수점을 표시하려고합니다.

가장 좋은 방법은 무엇입니까?

이 방법이 효과가 있습니까?

if((val * 10000) % 10 != 0) ... 
+0

: http://stackoverflow.com/q/16083666/380384 – ja72

답변

0

어리석은 대답은 다음과 같습니다 당신의 문자열에서 .의 위치를 ​​찾은 다음 위치 + 4를 확인합니다.

더 심각한 될 것입니다, 당신은이 서식을 사용할 수있는 double formatting options :

를 보라 더블 당신의 문자열의 마지막 인덱스가 0이면

//  using the F4:     1054.3224 

은 다음, 그것을 잘라

out을 사용합니다. 마지막 편집 ( if((val * 10000) % 10 != 0) ...), 예, 그것은 작동합니다의로

은 ... Sudhakar는 그의 대답에 같은 제안했다.

당신은 아마 당신이 이동 중 솔루션을 가지고 가고, int를 반환하는 도우미 메서드에 넣어, 그리고 당신은 당신의 코드에서 그것을 사용할 수 있습니다, 당신의 가독성을 돕고, 그리고 reusalibilyt :


한다

마크 솔루션으로 이동하십시오.

double d = 3.40; 
Console.Out.WriteLine("d 0.0: {0}", d);      // 3.4 
Console.Out.WriteLine("d 0.0: {0}", d.ToString("0.0"));  // 3.4 
Console.Out.WriteLine("d 0.00: {0}", d.ToString("0.00")); // 3.40 
Console.Out.WriteLine("d 0.0#: {0}", d.ToString("0.0#")); // 3.4 

는 모두가 . 후 3 또는 4 digts 경우 첫 번째 출력 위의 경우에 당신이 볼 수 있듯이, 기본이 잘립니다 제거 될 것이라는 점을 알 마십시오.

1

1. 값을 1000으로 곱한 다음 3rd significant 값의 마지막 숫자를 가져 오는 데 (value%10) mod 10 값을 곱하십시오.

예 : (크게 3)

 var val = 1.015; 
     int val1=Convert.ToInt32(val * 1000); 
     Console.WriteLine(val1 %10); 

Output: 5 

2.10000로 값을 곱하면 다음 4 significant 값의 마지막 자리를 얻기 위해 (value%10) 모드 10

예 : (크게 4)

 var val = 1.0157; 
     int val1=Convert.ToInt32(val * 10000); 
     Console.WriteLine(val1 %10); 

Output: 7 
1

http://msdn.microsoft.com/en-us/library/kfsatb94(v=vs.110).aspx

을이 당신의 출력 점검을 포맷에 대한 자세한 내용은

할 수있는 유효 자릿수가 4 자리 이상인지 확인하십시오

if (inputString.Split('.')[1].Length > 3) 

물론 오류 검사를 수행하지 않고도 일부 예외를 쉽게 던질 수는 있지만 기본 응답과 무효 검사로 내 대답을 혼란스럽게 할 필요는 없습니다.

1

당신은 사용자 지정 형식 문자열이 작업을 수행 할 수 있습니다 관련

double d = 1.2340; 
string strDouble = d.ToString("0.000#");