2012-08-29 4 views
0

현재 C# 및 C++ 응용 프로그램과 일치 시키려고합니다. 값이있을 때 C++ 측면에서, 말 : 플로팅 값에서 두 배로 유효 숫자를 "추가"하는 방법

const char* svalue = "554.1327"; 

내가 sscanf를 사용

: 그것은 "추가"유효 숫자를 가지고, 즉

float x; 
sscanf(svalue, "%f", &x); 

x에도 불구하고, 554.13269 동일시됩니다 그들이 동일한 값으로 반올림 될 수 있습니다. (이 응용 프로그램은 유효 숫자가 7 자 이상 포함될 수있는 다른 float 유형을 사용한다고 생각합니다.)

C++ 측을 변경하고 싶지 않습니다. 내 별도의 C# appliaction 같은 일을하고 싶습니다. 내가 플로트 23423.29이있는 경우

예를 들어, 나는 다음 문자열로 double 것을 변환하는 double (C#에서 이후는, float 표준은 더 이상 7 개 유효 숫자가 없습니다) 인 23423.289로 변환하고 싶습니다 .

나는 이것을 수행 할 방법을 찾을 수 없습니다. 어떤 아이디어? 또는 내 자신의 함수를 만들거나 C# 측에서 동일한 C++ 함수를 호출해야합니까? & hellip;

답변

0

안녕하세요 결과를 제공

  Double d = 23423.29f; 
     int a = 23423.29.ToString().Length; 
     Console.WriteLine(d.ToString().Remove(++a)); 

같은 문제에 대한 temprary 해결책이

23423.289 
0

"나는 플로트 23423.29 [중 & hellip]이있는 경우"

C#에서 리터럴 23423.29double 유형입니다. float 리터럴은 f 접미사를 갖습니다. 23423.29f.

float f = float.Parse("23423.29"); // results in f == 23423.29f 
double d = (double)f;    // results in d == 23423.2890625 

읽기 this answer을 질문 Convert float to double without losing precision에 대한 설명이 추가 수치를 표시하는 이유 : doublefloat에서 변환 할 때

말했다되는 것을 추가 수치는 .NET에서 발생합니다.

당신이 문자열로 다시 변환 할 때, 당신은 numeric format string을 통해 인물의 수, 예컨대 :

string s = d.Format("F3");   // will include 3 digits after the decimal point 
을 제어 할 수 있습니다