【问题标题】:I need to convert decimal or money to int我需要将小数或货币转换为 int
【发布时间】:2018-07-12 19:35:16
【问题描述】:

我尝试在 C# 中将此数字转换为 int,但我不能。

800,000.00是原始数字,我需要800000

我用过那条线,但没用。

value = int.Parse(Txt_proyeccion.Text, NumberStyles.Any | NumberStyles.Number);

那个原始数字在 asp 应用程序的文本框中。

谢谢!

【问题讨论】:

  • int.Parse("800,000.00", NumberStyles.AllowDecimalPoint | NumberStyles.AllowThousands);
  • value=(int)decimal.Parse(Txt_proyeccion.Text, NumberStyles.Any | NumberStyles.Number);

标签: c# asp.net type-conversion int currency


【解决方案1】:

尝试分两个步骤:

  1. 解析为decimal

  2. 转换为 int(截断或舍入)。

例如

// truncate: 80.97 -> 80
int value = (int) decimal.Parse(Txt_proyeccion.Text, NumberStyles.Any);

// round: 80.97 -> 81
int value = (int) Math.Round(decimal.Parse(Txt_proyeccion.Text, NumberStyles.Any));

编辑:您可能需要指定格式(例如CultureInfo.InvariantCulture)以确保.十进制分隔符而,分隔符:

using System.Globalization;

...

// truncate: 80.97 -> 80
int value = (int) decimal.Parse(
  Txt_proyeccion.Text, 
  NumberStyles.Any,
  CulureInfo.InvariantCulture);

// round: 80.97 -> 81
int value = (int) Math.Round(decimal.Parse(
  Txt_proyeccion.Text, 
  NumberStyles.Any,
  CulureInfo.InvariantCulture));

【讨论】:

  • 嗨,德米特里,它不起作用。 Vs 说“'System.FormatException' inmscorlib.dll”
  • @Rafael Mauricio Villalta Varga:怎么了?
  • 当号码尝试转换时,.net 显示来自库的消息并停止
  • @Rafael Mauricio Villalta Varga:信息是什么?尝试指定CulureInfo.InvariantCulture - 查看我的编辑 - 确保分隔符是.,
  • @Rafael Mauricio Villalta Varga: using System.Globalization;
【解决方案2】:

到底为什么人们会转换成字符串然后再转换成我不知道的数字。

float cash = 800000.49;
int number = (int)cash;

int number = (int)Math.Floor(cash);

int number = (int) Math.Round(cash);

你明白了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-13
    • 1970-01-01
    • 2022-12-03
    相关资源
    最近更新 更多