C# - 在文件中存储小数并回读

时间:2017-02-08 14:40:50

标签: c# decimal

是否可以在文本文件中以JSON格式(字符串,对象)存储十进制值,然后将其作为十进制检索而无需进行任何类型转换/解析等?

例如,文件中也可能存储了双精度数,这些不应该被解析为小数。

该文件不包含确定变量类型的其他信息:

" num1":4,

" num2":5.4,(为双)

" num3":563.2334(十进制)

1 个答案:

答案 0 :(得分:6)

是的,可以通过二进制编写器:

library(dplyr)
data %>% summarise_all(funs(min, max, mean))

通过这种方式,您将能够避免解析其文本表示并加载到内存中:

using(var bw = new BinaryWriter(File.OpenWrite("myFile.txt")))
{
    bw.Write(1234.01m); //there is actualy 16 bytes written to file. Double is 8 bytes long.
    bw.Write((double)5);
}

您不需要任何其他数据。十进制和双精度在内存中有不同的大小:

  • 十进制是 16字节
  • Double 8字节

因此,如果你想将你的值存储在JSON中那么糟糕,以便能够快速提取它 - >不要这样做。它可能不值得,这就是原因:

JSON本身是可解析的格式,即使将其存储在字节数组中,也会解析/转换它。如果您更喜欢速度而不是可读性 - 请使用其他序列化框架。例如, protobuf