Member 14557688 Ответов: 1

Как удалить конечные нули в десятичной системе счисления в C#


I using the code for price column

C# code: 
sku.SKUPrice = ValidationHelper.GetDecimal(txtActualPrice.Text, default(decimal));

The value is binding the textbox is "0.000000000"

I need the output is "0.00" only.

The database column datatype is "decimal(18.9)"

If I run the "
alter table COM_SKU alter Column SKUPrice decimal(18,2) not null" query I am getting below error message.


Msg 5074, Level 16, State 1, Line 5
The index 'IX_COM_SKU_SKUPrice' is dependent on column 'SKUPrice'.
Msg 4922, Level 16, State 9, Line 5
ALTER TABLE ALTER COLUMN SKUPrice failed because one or more objects access this column.


<pre>   <cms:CMSTextBox ID="txtActualPrice" runat="server" EnableViewState="false" CssClass="input__text"></cms:CMSTextBox>
                    <asp:RequiredFieldValidator ID="rfvActualPrice" runat="server" CssClass="EditingFormErrorLabel" ControlToValidate="txtActualPrice"></asp:RequiredFieldValidator>
                    <asp:RegularExpressionValidator ID="revActualPrice" runat="server" CssClass="EditingFormErrorLabel"
                        ControlToValidate="txtActualPrice" ValidationExpression="((\d+)((\.\d{1,100})?))$">
                    </asp:RegularExpressionValidator>


Что я уже пробовал:

<pre>   <cms:CMSTextBox ID="txtActualPrice" runat="server" EnableViewState="false" CssClass="input__text"></cms:CMSTextBox>
                    <asp:RequiredFieldValidator ID="rfvActualPrice" runat="server" CssClass="EditingFormErrorLabel" ControlToValidate="txtActualPrice"></asp:RequiredFieldValidator>
                    <asp:RegularExpressionValidator ID="revActualPrice" runat="server" CssClass="EditingFormErrorLabel"
                        ControlToValidate="txtActualPrice" ValidationExpression="((\d+)((\.\d{1,100})?))$">
                    </asp:RegularExpressionValidator>

Richard MacCutchan

Сообщение говорит вам, что вы не можете изменить этот столбец, потому что он связан с индексом. Вам нужно удалить индекс и попробовать еще раз.

Ashutosh Gpta

если это просто два десятичное значение, то решение заключается в использовании строку.формат преобразовать в максимум до второго знака после запятой. например, сеи.SKUPrice = строка.Формат("{0:0.##}", txtActualPrice.Текст);
но, похоже, у вас есть проблема индексации, о которой упоминал Ричард выше.

1 Ответов

Рейтинг:
8

Maciej Los

Сообщение об ошибке не связано с темой "конечные нули".

Я бы посоветовал вам прочитать это: ALTER TABLE ALTER COLUMN [access-id] не удалось, так как один или несколько объектов обращаются к этому столбцу[^]