如何输出 百分数 并且不会四舍五入? 这也100哦!!! 0.77777777输出为 77.77%有没有已经存在的函数, 可以直接用的?toString("P2") 会四舍五入的...不要四舍五入....分不少, 散点儿...呵呵 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 using System;namespace ConsoleApplication1{ class Program { static void Main(string[] args) { Console.WriteLine(GetPercent("0.77777777")); Console.WriteLine(GetPercent("0.701")); Console.Read(); } public static string GetPercent(string input) { double d; if (double.TryParse(input, out d)) { string temp = (d * 100).ToString(); return temp.Substring(0, Math.Min(temp.IndexOf('.') + 3,temp.Length)) + "%"; } return null; } }} 先谢了,cppfaq!字符串截取, 我也知道的, 但我想知道是否有现成的函数可用? 顶楼上的。你可以参考。你如果想保留二位小数,可以,先×100之后,toInt32会自动四舍五入,之后,再除以100保留两个小数,就可以了啊。如此类推。 js 的 function FormatNumber(srcStr,nAfterDot){ var srcStr,nAfterDot; var resultStr,nTen; srcStr = ""+srcStr+""; strLen = srcStr.length; dotPos = srcStr.indexOf(".",0); if (dotPos == -1){ resultStr = srcStr+"."; for (i=0;i<nAfterDot;i++){ resultStr = resultStr+"0"; } } else{ if ((strLen - dotPos - 1) >= nAfterDot){ nAfter = dotPos + nAfterDot + 1; nTen =1; for(j=0;j<nAfterDot;j++){ nTen = nTen*10; } resultStr = Math.round(parseFloat(srcStr)*nTen)/nTen; } else{ resultStr = srcStr; for (i=0;i<(nAfterDot - strLen + dotPos + 1);i++){ resultStr = resultStr+"0"; } } } return resultStr;} js 的 第2 个function myround(const yuan: Extended; const pp: Integer): Extended;//yuan:原浮点数,PP保留 小数点后第几位var p,l,m,l2:Longint; s:string; // 原浮点数 sq:string; // 小数点前 sh:string;//小数点后begin if yuan=0 then exit;// 原浮点数 0 if pp<0 then exit; //非法小数点后第几位 s:=floattostr(yuan); p:=pos('.',s); //小数点位置 sq:=midstr(s,1,p-1); sh:=midstr(s,p+1,length(s)-length(sq)-1); l:=length(sh);//小数位数 l2:=length(sq);//整数位数 if pp>=l then begin//0 result:=strtofloat(s); exit;//比如 11。06 要保留到 小数点后第3位显然 不合理 end;//{ if pp=l then //比如 11。06 要保留到 小数点后第2位不用处理 直接返回 begin//1 Result:=s; exit; end;//1 } if pp<l then //比如 11。06 要保留到 小数点后第1位 , begin//2 m:=strtoint(sh[pp+1]); if m>=5 then begin if pp>=1 then //保留到 小数点后第1,2位 begin//3 sh:=midstr(sh,1,pp); sh := inttostr(strtoint(sh)+1); if length(sh)>pp then begin sh:= midstr(sh,2,pp); sq:= inttostr(strtoint(sq)+1); end; Result:=strtofloat(sq+'.'+sh); exit; end//3 else //保留到 小数点后第0位 begin//4 sq[l2]:=chr(ord(sq[l2])+1); Result:=strtofloat(sq); exit; end;//4 end else begin if pp>=1 then //保留到 小数点后第1,2位 begin//3 sh:=midstr(sh,1,pp); Result:=strtofloat(sq+'.'+sh); exit; end//3 else //保留到 小数点后第0位 begin//4 Result:=strtofloat(sq); exit; end;//4 end; end;//2end; 自写写一个。Convert.Toint32(number * 100) / 100 ; 12345.ToString("p"); //生成 1,234,500.00% double x = 0.77777777;string s = ((int)(x * 10000) / 10000.0).ToString("P2"); 这是一个下切的功能。.NET中只提供了返回整数的方法:Math.Floor()。想要实现下切小数的功能,一般是先乘,再切,后除。 string num=(0.77777777 * 100).ToString("f10");Match m = Regex.Match(num, "\\d+[.]\\d{1,2}");if (m.Success){ num = m.Value;} Console.WriteLine(num + "%"); 这个方法绝对简单好用decimal num = Convert.ToDecimal(0.77777777*10000);num = decimal.Floor(num) / 100;Console.WriteLine(num + "%");Console.Read(); decimal co=Convert.ToDecimal(0.7777)*100;co=Math.Round(co,2);string per=co.ToString()+"%";; float bf1=1234.5678; string bs1=bf1.ToString("0.00"); 转成 Decimal 类型 应该就不会了 谢谢楼上各位朋友我用了一个简单点儿的方法.decimal xint = 0.777777M;xint = xint*10000;xint = Math.Floor(xint);xint = xint/10000;Console.WriteLine(xint .ToString ("P2"));结贴给分! word操作 socket接受数据缓存为1024k,实际接受数据远远大于该值,应该怎么办? 如何理解值类型数据和引用类型数据 祝大家新年快乐!散分. 截取字符串 excel上传到服务器,再从服务器读取到数据库的问题 使用c#开发微信公众平台二维码接口的方法 winform中datagridview纵向合并相同值的单元格的问题 VS中如何使用事务阿? 如何在panel上动态生成一个控件(100分相送,绝不食言,急!!!!!!!) 请问这代码该怎么转成C# C#高手 帮忙, 电子秤数据截取
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(GetPercent("0.77777777"));
Console.WriteLine(GetPercent("0.701"));
Console.Read();
} public static string GetPercent(string input)
{
double d;
if (double.TryParse(input, out d))
{
string temp = (d * 100).ToString();
return temp.Substring(0, Math.Min(temp.IndexOf('.') + 3,temp.Length)) + "%";
}
return null;
}
}
}
字符串截取, 我也知道的, 但我想知道是否有现成的函数可用?
var srcStr,nAfterDot;
var resultStr,nTen;
srcStr = ""+srcStr+"";
strLen = srcStr.length;
dotPos = srcStr.indexOf(".",0);
if (dotPos == -1){
resultStr = srcStr+".";
for (i=0;i<nAfterDot;i++){
resultStr = resultStr+"0";
}
}
else{
if ((strLen - dotPos - 1) >= nAfterDot){
nAfter = dotPos + nAfterDot + 1;
nTen =1;
for(j=0;j<nAfterDot;j++){
nTen = nTen*10;
}
resultStr = Math.round(parseFloat(srcStr)*nTen)/nTen;
}
else{
resultStr = srcStr;
for (i=0;i<(nAfterDot - strLen + dotPos + 1);i++){
resultStr = resultStr+"0";
}
}
}
return resultStr;}
//yuan:原浮点数,PP保留 小数点后第几位
var
p,l,m,l2:Longint;
s:string; // 原浮点数
sq:string; // 小数点前
sh:string;//小数点后
begin
if yuan=0 then exit;// 原浮点数 0
if pp<0 then exit; //非法小数点后第几位
s:=floattostr(yuan);
p:=pos('.',s); //小数点位置
sq:=midstr(s,1,p-1);
sh:=midstr(s,p+1,length(s)-length(sq)-1);
l:=length(sh);//小数位数
l2:=length(sq);//整数位数
if pp>=l then
begin//0
result:=strtofloat(s);
exit;//比如 11。06 要保留到 小数点后第3位显然 不合理
end;//
{ if pp=l then //比如 11。06 要保留到 小数点后第2位不用处理 直接返回
begin//1
Result:=s;
exit;
end;//1 }
if pp<l then //比如 11。06 要保留到 小数点后第1位 ,
begin//2
m:=strtoint(sh[pp+1]);
if m>=5 then
begin
if pp>=1 then //保留到 小数点后第1,2位
begin//3
sh:=midstr(sh,1,pp);
sh := inttostr(strtoint(sh)+1);
if length(sh)>pp then
begin
sh:= midstr(sh,2,pp);
sq:= inttostr(strtoint(sq)+1);
end;
Result:=strtofloat(sq+'.'+sh);
exit;
end//3
else //保留到 小数点后第0位
begin//4
sq[l2]:=chr(ord(sq[l2])+1);
Result:=strtofloat(sq);
exit;
end;//4
end
else
begin
if pp>=1 then //保留到 小数点后第1,2位
begin//3
sh:=midstr(sh,1,pp);
Result:=strtofloat(sq+'.'+sh);
exit;
end//3
else //保留到 小数点后第0位
begin//4
Result:=strtofloat(sq);
exit;
end;//4
end;
end;//2
end;
double x = 0.77777777;
string s = ((int)(x * 10000) / 10000.0).ToString("P2");
.NET中只提供了返回整数的方法:Math.Floor()。
想要实现下切小数的功能,一般是先乘,再切,后除。
Match m = Regex.Match(num, "\\d+[.]\\d{1,2}");
if (m.Success)
{
num = m.Value;
}
Console.WriteLine(num + "%");
decimal num = Convert.ToDecimal(0.77777777*10000);
num = decimal.Floor(num) / 100;
Console.WriteLine(num + "%");
Console.Read();
co=Math.Round(co,2);
string per=co.ToString()+"%";;
string bs1=bf1.ToString("0.00");
decimal xint = 0.777777M;
xint = xint*10000;
xint = Math.Floor(xint);
xint = xint/10000;
Console.WriteLine(xint .ToString ("P2"));
结贴给分!