您的位置:程序门 -> .net技术 -> c#



字符串转化的问题


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


字符串转化的问题[已结贴,结贴人:zbw9119]
发表于:2007-03-30 10:48:01 楼主
形如:
string   str   =   "1.00000001 ";
把str   的小数点保留两位.

如下的方法就不用了.

double   d   =   0;
try
{
        d   =   convert.todouble(str);
}
catch{}

string   strrslt   =   d.tostring( "f2 ");

我总是觉得还是会有其它的方法的,可是我就是想不出来.
总是觉得这样的方法要把字符先转化为double   ,再转为字符,这样会影响到性能.
请大家看看还有没有更好的方法.
发表于:2007-03-30 10:52:161楼 得分:0
math.round(d,   2);
发表于:2007-03-30 10:53:092楼 得分:0
str=string.format( "{0:n2} ");
发表于:2007-03-30 10:54:143楼 得分:5
string   str   =   "1.00000001 ";
str=string.format( "{0:n2} ",convert.todecimal(str));
发表于:2007-03-30 10:56:284楼 得分:0
string   str   =   "1.00000001 ";

console.writeline( "{0:f2} ",str);

这样输出就是两位
发表于:2007-03-30 11:01:155楼 得分:0
mqcan(强者归来)老兄的方法好像不行.
这样是可以的.
double   d   =   1.00000001   ;
console.writeline( "{0:f2} ",d);
发表于:2007-03-30 11:02:406楼 得分:0
zine_alone(☆小飞☆)  
的方法是正确的,
不过还有其它的方法吗?
发表于:2007-03-30 11:03:237楼 得分:10
string   str   =   textbox1.text;
if   ((str.indexof( ". ")   >   -1)   &&   (str.length   -   str.indexof( ". ")   >   2))
{
        textbox2.text   =   str.substring(0,   str.indexof( ". ")   +   3);
}
else
{
        textbox2.text   =   str;
}
发表于:2007-03-30 11:10:188楼 得分:10
or   try........

using   system.text.regularexpressions;

string   str   =   textbox1.text;
string   resultstr   =   str;
match   m   =   regex.match(str,   @ "(\d+\.\d{2})\d* ");
if(m.success)
{
        resultstr   =   m.groups[1].value;
}
richtextbox2.text   =   resultstr;
发表于:2007-03-30 11:12:159楼 得分:0
lxcnn(过客)  
老兄这个方法也是正确的.
大家还有什么其它的解吗?

如果单纯的把把str   看作是一个字符串,这是没有问题的,
如果把这str   作为一个double   类型的数字的字符串,
还有什么方法.
希望大家不要认为我在找茬.我也只是想找到更多的方法去解决一个很简单的问题.
发表于:2007-03-30 11:12:5010楼 得分:0
zine_alone(☆小飞☆)     的方法没有在lz的基础改进。
发表于:2007-03-30 11:15:0111楼 得分:0
呵呵.
up   一下.
发表于:2007-03-30 11:20:1612楼 得分:0
明天结,
分不够再加分.
发表于:2007-03-30 11:26:3513楼 得分:0
str   =   str.substring(0,   str.indexof( '. ')   +   3);
发表于:2007-03-30 11:33:1014楼 得分:5
保留两位小数,如果不考虑四舍五入,那么substring最快
string   str   =   "1.12 ";
int   i   =   str.indexof( '. ');
if   (i   >   0   &&   i   +   3   <   str.length)
        str   =   str.remove(i   +   3);

否则用string.format( "{0:n2} ",   convert.todecimal(str));

总得来说用后者可读性、扩展性更好
这两种方法一次计算的时间差别不过是0.00001毫秒级的
发表于:2007-03-31 11:32:4715楼 得分:0
结贴了.


快速检索

最新资讯
热门点击