微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 具有最大字符的System.Double值

我正在测试double []数组的net xml序列化,所以我有兴趣知道什么是具有大多数字符的双重值,它是序列化的,所以我可以测试序列化数组的最大输出大小.

解决方法:

它应该是24.

double.MinValue.ToString("R").Length

double.ToString(string)

or “R”, which returns 15 digits if the number can be represented with that precision or 17 digits if the number can only be represented with maximum precision.

你有最多17位数,加1为符号,加1为小数分隔符加5为E xxx(double.MaxValue为1.7976931348623157E 308和double.Epsilon,最小值> 0,为4.94065645841247 E-324,所以形式为E [ – ] [0-9] {1,3}).

请注意,在技术上,在某些奇怪的语言中,

var str2 = double.PositiveInfinity.ToString("R");

可能会更长(因为字符串已本地化),但我希望您使用CultureInfo.InvariantCulture序列化您的数字!

但请记住,用户可以从控制面板改变他们的文化…类似于:

var culture = (CultureInfo)CultureInfo.CurrentCulture.Clone();
culture.NumberFormat.NegativeSign = "Negative";
culture.NumberFormat.NumberDecimalSeparator = "DecimalSeparator";
var str4 = double.MinValue.ToString("R", culture);

结果:Negative1DecimalSeparator7976931348623157E 308

出于这个原因,最好使用CultureInfo.InvariantCulture

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。