当前位置:  开发笔记 > 编程语言 > 正文

Int.TryParse()始终返回false

如何解决《Int.TryParse()始终返回false》经验,为你挑选了1个好方法。

我有以下代码

 int varOut;
 int.TryParse(txt1.Text, out varOut); // Here txt1.Text = 4286656181793660  

这里txt1.Text是JavaScript生成的随机16位数字,是一个整数.但是上面的代码总是返回false,即varOut值总是为零.

我在这做错了什么?



1> Ian..:

用于限制int(32-bit整数)是-2,147,483,6482,147,483,647.你的号码太大了.

对于大的integer号码,如您的情况下,尽量Parse使用long.TryParse(或Int64.TryParse因为Int64long在C#)来代替.long数量限制是-9.2e18 to 9.2e18* 的范围

long varOut;
long.TryParse(txt1.Text, out varOut); // Here txt1.Text = 4286656181793660  

它应该足够您的号码,只有4.2e15(4,286,656,181,793,660).

或者,decimal.TryParse如果您想要包含十进制数(包含分数,更高精度),您可能需要考虑使用.

decimal varOut;
decimal.TryParse(txt1.Text, out varOut); // Here txt1.Text = 4286656181793660  

它是128-bit数据类型,具有范围-7.9e28 to 7.9e2828-29有效位数精度,最适合涉及金钱的任何计算.

而且,作为最后的一句话来完成答案,也可能是不安全的使用double-你使用它.虽然double具有非常高的范围±5.0 × 10e?324 to ±1.7 × 10e308,但其精度仅为约15-16位(参考).

double varOut;
double.TryParse(txt1.Text, out varOut); // Not a good idea... since the input number is 16-digit Here txt1.Text = 4286656181793660  

在这种情况下,您的数字由16位数组成,位于double精度的边界线上.因此,在某些情况下,您可能会得到错误的结果.只有当您确定您的号码最多只能达到 15位数时才能安全使用它.



*-9,223,372,036,854,775,8089,223,372,036,854,775,807.

推荐阅读
kikokikolove
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有