c# - 确定小数是否可以存储为 int32

标签 c# .net decimal int32

我正在做一些自定义序列化,为了节省一些空间,我想将小数序列化为 int,如果可能的话,值明智。性能是一个问题,因为我正在处理大量数据。我目前使用的方法是:

if ((value > Int32.MinValue) && (value < Int32.MaxValue) && ((valueAsInt = Decimal.ToInt32(value)) == value))
{
    return true;
}

这可以改进吗?

最佳答案

你有负值吗?我猜是的,因为你有 MinValue 检查,否则你可以跳过它。您甚至可以使用 unsigned int,这样您就可以将更多的 double 值转换为整数。

编辑:此外,如果您有更多的正数,您可以交换前两个条件。这样第一个最有可能失败,减少了比较的总数。

关于c# - 确定小数是否可以存储为 int32,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2738577/

相关文章:

c# - 我如何验证 ryujit 正在 jitting 我的应用程序?

c# - 从单个数据表 c# 填充类的嵌套列表

c# - 表单可以判断是否有打开的模态窗口吗?

c# - 将值从变量替换为另一个值

c# - 如何将数据绑定(bind)零 double 值转换为空字符串?

c# - 创建一个基本的 NuGet 包

.net - 如何将 XPath 与 XElement 或 LINQ 一起使用?

c - 如何将负十六进制转换为十进制

c - 如何让小数点的值只显示在数字中?

C++ 将 float 转换为字符串