救命:求一字符串操作函数!!!!(看到的都请进来帮一下忙)

snoopy_ken 2003-10-20 12:58:08
要求能将一个String类型的金额值(从数据库中取得)显示为0,000.00和0,000.0000这2种格式(从数据库中取得的时候为000000.0000),小数点前每隔3位显示一个逗号.

还有就是将0,000.0000这样的格式显示为00000000.0000

请大家帮忙一下,谢谢了
...全文
78 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
VVV_lucky 2003-10-20
  • 打赏
  • 举报
回复
public static String setFormat(String formater){

double dNumber = 0.00;
DecimalFormat dFormat;

dNumber = Double.parseDouble(formater);

if ((dNumber<0.00001)&&(dNumber>-0.00001)){

dFormat = new DecimalFormat("00000000.0000");

}else{

dFormat = new DecimalFormat("#,##0.0000");

}

return(dFormat.format(dNumber));
}
我试了一下好用。
import java.text.DecimalFormat;


public class TimeTest {

public static String setFormat(String formater){

double dNumber = 0.00;
DecimalFormat dFormat;

dNumber = Double.parseDouble(formater);

if ((dNumber<0.00001)&&(dNumber>-0.00001)){

dFormat = new DecimalFormat("00000000.0000");

}else{

dFormat = new DecimalFormat("#,##0.0000");

}

return(dFormat.format(dNumber));
}

public static void main(String[] args)
{
String myNumber = "1000.10";

System.out.print(setFormat(myNumber));

}
}
haode 2003-10-20
  • 打赏
  • 举报
回复
下标越界……

length为n的时候,charAt最多只能取到n-1
leowu 2003-10-20
  • 打赏
  • 举报
回复
楼上的,人家明明写的一个runnable class,你干什么把它夹在一段jsp代码里,那当然不对啦。
直接把那个class运行即可。
snoopy_ken 2003-10-20
  • 打赏
  • 举报
回复
TO:cbhyk()
大哥,您的好意我心领了,可这结果…………
500 Servlet Exception
Note: sun.tools.javac.Main has been deprecated.
/test.jsp:28: Missing term.
try {
^
/test.jsp:28: ';' expected.
try {
^
/test.jsp:3: Invalid expression statement.
import java.text.DecimalFormat;
^
/test.jsp:3: '}' expected.
import java.text.DecimalFormat;
^
/test.jsp:9: Method void main(String[]) can't be static in inner class _jsp._test__jsp. Temp. Only members of interfaces and top-level classes can be static.
public static void main(String[] args)
^
/test.jsp:78: Class or interface declaration expected.
} catch (java.lang.Throwable e) {
^
6 errors, 1 warning


snoopy_ken 2003-10-20
  • 打赏
  • 举报
回复
TO: qzj()
还是不行:(
报告错误:
java.lang.StringIndexOutOfBoundsException
at java.lang.StringBuffer.insert(StringBuffer.java:874)
at _jsp._test1__jsp._jspService(/test1.jsp:16)
at com.caucho.jsp.JavaPage.service(JavaPage.java:89)
at com.caucho.jsp.JavaPage.subservice(JavaPage.java:83)
at com.caucho.jsp.Page.service(Page.java:334)
at com.caucho.server.http.Invocation.service(Invocation.java:255)
at com.caucho.server.http.CacheInvocation.service(CacheInvocation.java:201)
at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:217)
at com.caucho.server.http.HttpRequest.handleConnection(HttpRequest.java:151)
at com.caucho.server.TcpConnection.run(TcpConnection.java:140)
at java.lang.Thread.run(Thread.java:536)
cbhyk 2003-10-20
  • 打赏
  • 举报
回复
用java.text.DecimalFormat:

import java.text.DecimalFormat;
public class Temp
{
public static void main(String[] args)
{
String value = "000000.0000";

//000000.0000 -> 0,000.00
DecimalFormat df = new DecimalFormat();
df.setGroupingUsed(true);
df.setMinimumFractionDigits(2);
df.setMinimumIntegerDigits(4);
System.out.println(df.format(Double.parseDouble(value)));

//000000.0000 -> 0,000.0000
df.setGroupingUsed(true);
df.setMinimumFractionDigits(4);
df.setMinimumIntegerDigits(4);
System.out.println(df.format(Double.parseDouble(value)));

//0,000.0000 -> 00000000.0000
try
{
value = "0,000.0000";
df.setGroupingUsed(true);
double dValue = df.parse(value).doubleValue();
df.setGroupingUsed(false);
df.setMinimumIntegerDigits(8);
df.setMinimumFractionDigits(4);
System.out.println(df.format(dValue));
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
zez 2003-10-20
  • 打赏
  • 举报
回复
好像有numberformat类专门做这个的..

------------------------------------------------------
我们还年轻牛奶会有的奶牛也会有的
可天天在 csdn 混这些会有吗 ??
TonyTonyQ 2003-10-20
  • 打赏
  • 举报
回复
0,0000.0000->0000000.0000
StringBuffer b=new StringBuffer();
String s=........;//s--->0,000.0000
int i=0;
while(i<s.length()){
if(s.charAt(i)!=','){
b.append(s.charAt(i));
}
i++;
}
String r=b.toString();//结果。

00000.0000->0,000.0000
StringBuffer b=new StringBuffer(s);//s-->0000.0000
int a=s.indexOf(".");
a=a-1;
while(a>0){
a=a-3;
b.insert(a,",")
}
s=b.toString();//结果

要上课了,来不及细看。大致方法就是这样把。
aixy 2003-10-20
  • 打赏
  • 举报
回复
先把数字变成字符串再处理。很简单吧!
CoolAbu 2003-10-20
  • 打赏
  • 举报
回复
自己写吧,好像没有直接的函数。

1。将000000.0000转换为0,000.0000格式,可以把它转成字符串来处理,取.前面的字符串,自右向左,没3位加一个,

2,将0,000.0000这样的格式显示为00000000.0000,你可以把它当成字符串处理,把里面的,replace掉就Ok了。
fpwang 2003-10-20
  • 打赏
  • 举报
回复
不难,你自己实现一个不行么?

62,612

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧