소수점 이하의 숫자를 정수 형태로 받고 싶습니다. 예를 들어, 1.05에서 05 만 또는 0.50이 아닌 2.50에서 50 만
답변
업데이트 된 답변
여기에서는 동일한 방법으로 3 가지 접근 방식을 제공합니다.
[1] Math.Truncate를 이용한 수학 솔루션
var float_number = 12.345;
var result = float_number - Math.Truncate(float_number);
// 입력 : 1.05
// 출력 : “0.050000000000000044”
// 입력 : 10.2
// 출력 : 0.19999999999999929
이것이 예상 한 결과가 아니라면 결과를 원하는 형식으로 변경해야합니다 (하지만 일부 문자열 조작을 다시 수행 할 수 있음).
[2] 승수 사용 [10의 N 제곱 (예 : 10² 또는 10³) 여기서 N은 소수 자릿수입니다.]
// multiplier is " 10 to the power of 'N'" where 'N' is the number
// of decimal places
int multiplier = 1000;
double double_value = 12.345;
int double_result = (int)((double_value - (int)double_value) * multiplier);
// 출력 345
소수점 이하 자릿수가 고정되지 않은 경우이 방법은 문제를 일으킬 수 있습니다.
[3] “정규식 (REGEX)”사용
문자열로 솔루션을 작성할 때 매우주의해야합니다. 이것은 일부 경우를 제외하고는 바람직하지 않습니다 .
소수 자릿수로 문자열 연산 을 수행 하려는 경우 이것이 바람직합니다.
string input_decimal_number = "1.50";
var regex = new System.Text.RegularExpressions.Regex("(?<=[\\.])[0-9]+");
if (regex.IsMatch(input_decimal_number))
{
string decimal_places = regex.Match(input_decimal_number).Value;
}
// 입력 : “1.05”
// 출력 : “05”
// 입력 : “2.50”
// 출력 : “50”
// 입력 : “0.0550”
// 출력 : “0550”
Regex에 대한 자세한 내용은 http://www.regexr.com/ 에서 찾을 수 있습니다 .
답변
가장 좋은 방법은 다음과 같습니다.
var floatNumber = 12.5523;
var x = floatNumber - Math.Truncate(floatNumber);
원하는대로 변환 할 수있는 결과
답변
var decPlaces = (int)(((decimal)number % 1) * 100);
이것은 당신의 숫자가 소수점 두 자리 만 가지고 있다고 가정합니다.
답변
‘Math.Truncate’접근 방식보다 더 깨끗하고 빠른 솔루션이 있습니다.
double frac = value % 1;
답변
반올림 문제가없는 솔루션 :
double number = 10.20;
var first2DecimalPlaces = (int)(((decimal)number % 1) * 100);
Console.Write("{0:00}", first2DecimalPlaces);
출력 : 20
십진수로 캐스트하지 않으면
19
.
또한:
- 대
318.40
출력 :40
(대신39
) - 대
47.612345
출력 :61
(대신612345
) - 대
3.01
출력 :01
(대신1
)
금융 번호로 작업하는 경우 (예 :이 경우 거래 금액 의 센트 부분 을 얻으려는 경우 ) 항상
decimal
데이터 유형을 사용하십시오 .
최신 정보:
다음은 문자열로 처리하는 경우에도 작동합니다 (@SearchForKnowledge의 답변을 기반으로 함).
10.2d.ToString("0.00", CultureInfo.InvariantCulture).Split('.')[1]
그런 다음을 사용 Int32.Parse
하여 int로 변환 할 수 있습니다 .
답변
더 좋은 방법 –
double value = 10.567;
int result = (int)((value - (int)value) * 100);
Console.WriteLine(result);
출력-
56
답변
가장 간단한 변형은 아마도 Math.truncate ()입니다.
double value = 1.761
double decPart = value - Math.truncate(value)