C# (VS 2008 SP1)에서 반올림 통화가 흥미 롭습니다.C# 서식 통화
alt text http://img697.imageshack.us/img697/8500/testcases.png
내가 기대 한 경우 다섯, 여섯, 일곱 (출력에서 그들을 번호없는 내 나쁜) 페니에 숫자를 반올림하기 : 아래는 테스트 케이스의 이미지입니다. 여기
내 테스트 코드입니다 : 내가 에 대한 호출을 가지고 을public string ToString(string format)
{
return Number.FormatDecimal(this, format, NumberFormatInfo.CurrentInfo);
}
발견에 내가 무슨 일이 있었는지보고로 .toString (문자열 형식)에 반영
static void Main(string[] args)
{
decimal one = 10.994m;
decimal two = 10.995m;
decimal three = 1.009m;
decimal four = 0.0044m;
decimal five = 0.0045m;
decimal six = 0.0046m;
decimal seven = 0.0049m;
decimal eight = 0.0050m;
Console.WriteLine(one + ": " + one.ToString("C"));
Console.WriteLine(two + ": " + two.ToString("C"));
Console.WriteLine(three + ": " + three.ToString("C"));
Console.WriteLine(four + ": " + four.ToString("C"));
Console.WriteLine(five + ": " + five.ToString("C"));
Console.WriteLine(six + ": " + six.ToString("C"));
Console.WriteLine(seven + ": " + seven.ToString("C"));
Console.WriteLine(eight + ": " + eight.ToString("C"));
Console.ReadLine();
}
[MethodImpl(MethodImplOptions.InternalCall)]
public static extern string FormatDecimal(
decimal value,
string format,
NumberFormatInfo info);
NumberFormatInfo에 대한 현재 culture 설정의 세분성을 나타내는 논리가 해당 호출에 있습니까? 열세 번째 소수 자리 때문에 열세 번째 자리가 중요하지 않으므로 숫자를 굴리지 마라.
이 방법은 어떻게 구현됩니까? 우리는 조금씩 움직이는 땅에 가나, 아니면 다른 일이 있습니까?
통찰력을 주셔서 감사합니다.
는, 당신은 반 페니에 첫 라운드에 필요 Math.Round (5, 3, MidpointRounding.AwayFromZero) :이 결과는 페니쪽으로 반올림됩니다. –
밀리 톨라를 측정하는 문화권을 찾으십시오. –
"아냐, 너는 이해가 안돼. 매우 복잡해. 어쨌든 총계에요. 그래서 나는 여기서 1 페니 분량에 대해 이야기하고 있습니다. 그리고 시간이 지남에 따라 많은 것들이 합쳐집니다." http://www.imdb.com/title/tt0151804/quotes?qt0996772 – blu