2012-04-24 6 views
2

나는 SQL 테이블에서 당기는 gridview가 있고 달러 숫자가 변화한다. 그들은 수천, 수백만 또는 수십억에 있습니다. 현재 {0 : c0}을 (를) 사용하고 있지만 3 개의 유효 숫자 만 표시하도록이 수치를 줄이는 데 관심이 있습니다.유효 숫자에 gridview의 통화를 반올림하는 방법은 무엇입니까?

예를 들어 $ 3,411,216,512.07을 $ 3.41B로 표시하고 싶습니다. 1,066,555.54 달러는 $ 1.07M로 표시됩니다.

ASP.NET에서이 작업을 수행하는 간단한 방법이 있습니까? 아니면 jQuery를 중단해야합니까? 또는 C# OnRowDataBound에서해야합니까?

+0

데이터 소스의 데이터를 gridview에 바인딩하기 전에 수정할 수 있습니까? – Servy

+0

할 수 있습니다. 그런 다음 질문은 Surreal Dreams의 접근 방식을 사용하여 SQL에서이 작업을 수행하고 각 값에 대해 다른 열을 추가하는 것이 더 좋습니까? 아니면 다른 두 가지 대답을 사용하여 C#으로 수행하는 것이 더 낫습니다. 궁극적으로 우리는 몇 백 줄만 이야기합니다 (대부분 질문을받을 때까지 사용자에게 숨겨져 있습니다). 따라서 성능 문제가있을 수 있습니다. – ScottieB

답변

0

숫자를 문자열로 변환하고 처음 4자를 가져올 수 있습니다 - 단위, 쉼표 등이없는 순수한 숫자를 가정하여 다시 숫자로 변환하고 반올림 한 다음 원래 길이를 계산하십시오 문자열, B, M, K 등이 될 수있는 소수점을 넣을 곳을 결정하는 문자열입니다. 서버 쪽에서 브라우저를 사용하지 않는 것이 좋습니다. 당신은 그것을 어떻게 든 대화식으로 만들고 싶습니다.

0

나는 OnRowDataBound에서 할 것입니다. 귀하의 전화 번호가 10 억보다 큰지 확인하고, 그것을 10 억으로 나누고, string.format의 끝에 "B"를 붙이고, 앞에있는 통화 기호를 누른 다음 반환하십시오. 숫자가 백만보다 큰지 확인하십시오 ...

아마도 동적으로 처리하는 알고리즘을 작성할 수는 있지만, 이것이 돈이기 때문에 수작업으로 수작업으로 수행하는 것이 훨씬 빠를 것입니다.

0
if(n>999999) 
    { 
    string number = Convert.ToString(n.slice[0,3]) + "M"; 
    ... 
//> (apply it to your datatable and then show it (in datagridview if that's 
//> what you're using) 
    } 
    else if (n>...) 

Bilion 등의 경우에는이를 반복하지만 쉼표가 어디에 있는지 확인해야합니다. 어떻게하는지 잘 모르겠습니다. 그것은 당신이 원했던 "B"또는 "M"을 적용하여 처음 3 자리 숫자를 얻는 방법입니다.

관련 문제