Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用符号格式化土耳其里拉?_Java_Formatting_Locale - Fatal编程技术网

Java 如何使用符号格式化土耳其里拉?

Java 如何使用符号格式化土耳其里拉?,java,formatting,locale,Java,Formatting,Locale,我试着用区域设置来做,但它只显示为文本,符号没有显示出来。我正在使用Java14SDK 我试过的代码: Locale tr = new Locale("tr", "TR"); BigDecimal points = new BigDecimal(175678.64); System.out.println(NumberFormat.getCurrencyInstance(tr).format(points)); 输出: 175.678,64 TL 我想: ₺175.678,64

我试着用区域设置来做,但它只显示为文本,符号没有显示出来。我正在使用Java14SDK

我试过的代码:

  Locale tr = new Locale("tr", "TR");
  BigDecimal points = new BigDecimal(175678.64);
  System.out.println(NumberFormat.getCurrencyInstance(tr).format(points));
输出:

175.678,64 TL
我想:

₺175.678,64

考虑使用
java.util.Currency
Currency
类。
Currency
类有两个方法
getSymbol()
getSymbol(Locale)
。在您的情况下,应该将第二种方法与
locale
参数一起使用。这将返回表示土耳其里拉货币符号的
字符串

您可以像这样初始化
货币
对象:

Currency=Currency.getInstance(tr);

currency.getSymbol(tr);
将以
字符串的形式返回货币符号


此外,您应该知道,在Java中将土耳其里拉符号表示为字符的unidoce是
\u20BA

请在您的国家/地区尝试此更改“Locale.CANADA”

NumberFormat format = NumberFormat.getCurrencyInstance(Locale.CANADA);
        String currency = format.format(number);
        System.out.println("Currency in Canada : " + currency);
没问题 为了便于调试,我将您的代码分为多行

当我访问站点时,我会得到您想要的输出


顺便说一下,您应该将输入的数字作为文本传递(添加引号)。否则,您将无法达到使用BigDecimal的目的

/* package whatever; // don't place package name! */

import java.util.*;
import java.lang.*;
import java.io.*;

import java.math.* ;
import java.text.* ;

/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
    public static void main (String[] args) throws java.lang.Exception
    {
        // your code goes here

Locale locale = new Locale("tr", "TR");
  BigDecimal points = new BigDecimal( "175678.64" ) ;


NumberFormat f = NumberFormat.getCurrencyInstance( locale ) ;
String output = f.format( points ) ;

System.out.println( output ) ;


    }
}
运行时:

₺175.678,64


我也尝试过(在我的语言环境中,使用Java14(win)),但(除此之外,它无法打印“₺" <代码>\u20BA
)我得到了
?175.678,64
(因此另一种“默认格式”)…修改货币符号()没有效果…我还断言它等于(修改前为
\u20BA
)。该代码生成
₺175.678,64
对于我来说,在en-US语言环境中运行时,
System.out.println(locale.getDefault());
显示什么?顺便说一下,您应该将输入的数字作为文本传递(添加引号)。否则,您将无法使用
BigDecimal
@VGR。我不想使用默认值,因为我们不知道每个人的计算机的默认值是多少。这是有道理的,但我想知道您的默认区域设置是否有问题。我的代码与您的代码相同,我的国家没有区域设置代码。我如果认为库区域设置只有这个符号,那么最好检查Java中是否有另一个货币符号库是的,你是对的。这是我的错。我从其他地方收到了一条错误消息。谢谢你的帮助。:D