C# 检查小数点?为空

C# 检查小数点?为空,c#,C#,如果十进制值为null或0,我想返回“NA”字符串。我尝试了以下命令,但无效: var value = (tmpValue == null) ? (decimal?)tmpValue : "NA"; 我已经将tmpValue初始化为: decimal? tmpValue = 0; 基本上,如果tmpValue为0或null,我想返回“NA”。注意:我不想将tmpValue转换为字符串,作为基于十进制值的公式。最好的方法是什么?首先消除空值,然后转换为字符串 var value = (tmpV

如果十进制值为null或0,我想返回“NA”字符串。我尝试了以下命令,但无效:

var value = (tmpValue == null) ? (decimal?)tmpValue : "NA";
我已经将
tmpValue
初始化为:

decimal? tmpValue = 0;

基本上,如果
tmpValue
为0或null,我想返回“NA”。注意:我不想将
tmpValue
转换为字符串,作为基于十进制值的公式。最好的方法是什么?

首先消除空值,然后转换为字符串

var value = (tmpValue ?? 0M) != 0M ? tmpValue.ToString() : "NA";

你不能两全其美,要么用小数,要么用字符串。处理此问题的更好方法可能是将
0M
值更改为
null
,这样当您准备好格式化数字时,可以将所有空值视为
“NA”

首先消除空值,然后转换为字符串

var value = (tmpValue ?? 0M) != 0M ? tmpValue.ToString() : "NA";
你不能两全其美,要么用小数,要么用字符串。处理此问题的更好方法可能是将
0M
值更改为
null
,这样当您准备好格式化数字时,可以将所有空值视为
“NA”

这正是你想要的。因为你只关心NA,所以你会像下面那样使用它。我让它返回
value.ToString()
,因为它比返回空字符串要好,尽管您可以更改它来实现这一点

if (IsDecimalNull(tmpValue) == "NA"){
    //do what you want with the null value
}
这正是你想要的。因为你只关心NA,所以你会像下面那样使用它。我让它返回
value.ToString()
,因为它比返回空字符串要好,尽管您可以更改它来实现这一点

if (IsDecimalNull(tmpValue) == "NA"){
    //do what you want with the null value
}


如果
tmpValue
是非空的非零小数,您希望为
value
分配什么?现在,您正试图将两种不同的类型分配给
decimal?
string
取决于
tmpValue==null
的计算结果。如果有值,则需要十进制值;如果值为0或null,则需要“NA”。如果
tmpValue
是非null十进制值,则要为
值分配什么?现在,您正试图将两种不同的类型分配给
decimal?
string
取决于
tmpValue==null
的计算结果。如果有值,则需要十进制值;如果是0或null,则需要“NA”。字符串插值不是c#6.0特性吗?问题被标记为c#-4.0。字符串插值不是c#6.0特性吗?问题被标记为c#-4.0。这不会将tmpValue更改为字符串吗?tmpValue是否可能是动态的&仅为null和0的字符串?不,它不会改变任何东西。除非它是一个对象,并将其转换为字符串或十进制。但这很糟糕,它只是检查null或零,然后输出NA或十进制的字符串表示形式。除了检查NA的返回值外,您不需要使用函数的返回值。它只是通过输出NA(如果是)或字符串版本(如果不是)来告诉您该值是否为null。如果要对十进制进行数学运算,则不需要(或希望)使用字符串值。不过,您应该知道,在javascript中,字符串
“8.05”
与十进制值
8.05
被视为相同。但这就是javascript,它是一种弱类型语言——c#是一种强类型语言。这不会将tmpValue更改为字符串吗?tmpValue是否可能是动态的&仅为null和0的字符串?不,它不会改变任何东西。除非它是一个对象,并将其转换为字符串或十进制。但这很糟糕,它只是检查null或零,然后输出NA或十进制的字符串表示形式。除了检查NA的返回值外,您不需要使用函数的返回值。它只是通过输出NA(如果是)或字符串版本(如果不是)来告诉您该值是否为null。如果要对十进制进行数学运算,则不需要(或希望)使用字符串值。不过,您应该知道,在javascript中,字符串
“8.05”
与十进制值
8.05
被视为相同。但这就是javascript,它是一种弱类型的语言——c#是一种强类型的语言!如果您尝试将该值用作十进制,在将其转换为动态类型并具有值“NA”后,您将得到一个运行时异常。这段代码虽然短而甜美,但除非您在运行后通过执行运行时类型检查来正确使用它,否则注定会导致错误。我很高兴你找到了解决办法!又短又甜!如果您尝试将该值用作十进制,在将其转换为动态类型并具有值“NA”后,您将得到一个运行时异常。这段代码虽然短而甜美,但除非您在运行后通过执行运行时类型检查来正确使用它,否则注定会导致错误。我很高兴你找到了解决办法!