c# - 将 e.NewValue 转换为十进制

标签 c# .net decimal

我正在尝试处理值更改,以便进行计算

    private void supplierDiscountPercetangeSpinEdit_EditValueChanging(object sender, DevExpress.XtraEditors.Controls.ChangingEventArgs e)
    {
        decimal price, percentage, calculatedPrice;

        price = (decimal)supplierPriceSpinEdit.EditValue;
        percentage = Convert.ToDecimal(e.NewValue);  // breakpoint 1
        calculatedPrice = Popust.Izracunaj(price, percentage); // breakpoint 2

        supplierPriceWithDiscountSpinEdit.EditValue = calculatedPrice;
    }

在断点 1 e.NewValue 处是 object {string} "1.00"

在断点 2 处百分比object {decimal} 100

并且必须是1.00M

如何将 e.NewValue 转换为十进制?

最佳答案

您应该使用CultureInfo:在您当前的文化中'.'分隔符,而不是小数 一;这就是为什么

  1.00 -> 100 // <- thousand separator '.' removed

尝试这样说

  Convert.ToDecimal(e.NewValue, CultureInfo.InvariantCulture);

关于c# - 将 e.NewValue 转换为十进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21426371/

相关文章:

C#:应用程序中的内部文件数据库

c# - Google Calendar API 和 C# - 403 Forbidden

java - Java程序小数点太多

python - 如何用任何小数舍入一个值

C# 文件 - 在剪贴板中如何设置/读取调用哪个操作 - 剪切或复制

c# - C# 2.0 中是否有匿名的、类型安全的、通用的委托(delegate)签名?

c# - 从 Windows 服务创建交互式提升进程并显示给登录用户

c# - 如何等待 WCF 代理客户端准备好?

c - 如何在 C 中将十进制文字转换为十六进制,500 到 0x0500

c# - 我想要一个关于循环命名空间依赖的警告