2013-12-01 3 views
0

Предположим, что у меня есть десятичное число 12345789,0 Также у меня есть RadioButtonList:возвращение или вычислить десятичное число в зависимости от выбора пользователя

<asp:RadioButtonList ID="RadioButtonList1" runat="server"> 
    <asp:ListItem>1</asp:ListItem> 
    <asp:ListItem>1000</asp:ListItem> 
    <asp:ListItem>1000000</asp:ListItem> 
</asp:RadioButtonList> 

Когда я выбираю пункт радио, я хочу, чтобы получить результат:

Case 1: 123456789.0/1 = 123456789.0 
Case 1000: 123456789.0/1000 = 123456.7 
Case 1000000: 123456789.0/1000000 = 123.45 

Результат должен быть десятичным. Посмотрите, что результаты после точки должны быть разными.

Может ли кто-нибудь дать мне совет, как это сделать.

ответ

1

Вы можете использовать целочисленное преобразование немного, чтобы добиться того, что вы хочу:

decimal val = 123456789; 
decimal result = val/1000000; 

result = result * 100; 
int converter = (int)result; 
result = converter/100m; 

string resultString = result.ToString("0.##"); 

В результатеStringString теперь содержит правильный ответ.

Вы, разумеется, должны были бы создать случай переключения или что-то, чтобы получить правильное число, чтобы разделить его в val/X. Но это должно помочь вам в достаточной мере, чтобы получить то, что вы хотите.

+0

Chikilah, не очень хорошо, но работает. Thnks – serg

+0

Да, я понимаю, что это своего рода хакерский метод. Я бы предположил, что есть некоторые способы обойти его и с библиотекой Math, но я не очень много работал с этой библиотекой на данный момент. Вы можете найти ссылку здесь: http://msdn.microsoft.com/en-us/library/system.math(v=vs.110).aspx – Chikilah

+0

Я сомневаюсь, что вы сомневаетесь. Реальная проблема связана скорее с округлением. Проверьте ответ в этом вопросе http://stackoverflow.com/questions/13522095/rounding-down-to-2-decimal-places-in-c-sharp – th1rdey3

0

Вы ищете что-то вроде этого -

страницы ASPX

<asp:Label id="lbl" runat="server"></asp:Label> 
<asp:RadioButtonList ID="RadioButtonList1" runat="server" AutoPostBack="true" OnSelectedIndexChanged="RadioButtonList1_SelectedIndexChanged"> 
    <asp:ListItem>1</asp:ListItem> 
    <asp:ListItem>1000</asp:ListItem> 
    <asp:ListItem>1000000</asp:ListItem> 
</asp:RadioButtonList> 

код за

protected void RadioButtonList1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    decimal val = 123456789.0m; 
    switch(RadioButtonList1.SelectedValue) 
    { 
     case "1": 
     case "1000": 
      lbl.Text = (val/Convert.ToDecimal(RadioButtonList1.SelectedValue)).ToString("0.#"); 
      break; 
     case "1000000": 
      lbl.Text = (val/Convert.ToDecimal(RadioButtonList1.SelectedValue)).ToString("0.##"); 
      break; 
     default: 
      break; 
    } 
    lbl.Text = (val/Convert.ToDecimal(RadioButtonList1.SelectedValue)).ToString(); 
} 
+0

Не этот круглый десятичный? :) – Chikilah

+0

Спасибо за ответ, но нет. Посмотрите, что результаты после точки должны быть разными. – serg

Смежные вопросы