标签: decimal-point

确定输入数字的小数精度

我们有一个有趣的问题,我们需要确定用户输入(文本框)的小数精度.基本上我们需要知道输入的小数位数,然后返回一个精确数字,最好用例子说明:

输入4500将产生结果1
4500.1输入将产生结果0.1
4500.00输入将产生结果0.01
4500.450输入将产生结果0.001

我们正在考虑使用字符串,找到小数分隔符,然后计算结果.只是想知道是否有更简单的解决方案.

c# precision decimal decimal-point

9
推荐指数
3
解决办法
2万
查看次数

如何将小数点分隔符设置为逗号?

我想读写PI作为3,141592代替3.141592,如使用逗号是许多欧洲国家普遍.我怎样才能用iostreams 实现这个目标?换一种说法

cout << 3.141592;
Run Code Online (Sandbox Code Playgroud)

应该打印

3,141592
Run Code Online (Sandbox Code Playgroud)

到标准输出.

c++ formatting iostream decimal-point comma

9
推荐指数
2
解决办法
2万
查看次数

最优雅的方式加载csv点与R中的千位分隔符

注意:据我所知,这个问题并不重复!我找到的所有问题/答案要么是如何从已经在R中的数据中消除点,要么在加载时如何将小数点更改为逗号.

我有一个csv,其数字如下:4.123,98.问题是因为.加载时输出变成了字符串矩阵read.table,read.csv或者read.csv2.更改dec,于事无补.

我的问题
加载这个csv的最优雅的方法是什么,以便数字变成例如4123.98数字?

csv r decimal decimal-point decimalformat

9
推荐指数
1
解决办法
1491
查看次数

在Java中,为什么小数分隔符遵循Locale的语言,而不是其国家/地区,更重要的是,如何覆盖它?

我正在开展一个国际项目,并且观察到,在Java中,小数分隔符的选择基于Locale的语言,而不是其国家.例如:

DecimalFormat currencyFormatter = (DecimalFormat) NumberFormat.getInstance(new Locale("it","IT"));
System.out.println(currencyFormatter.format(-123456.78));

currencyFormatter = (DecimalFormat) NumberFormat.getInstance(new Locale("en","IT"));
System.out.println(currencyFormatter.format(-123456.78));
Run Code Online (Sandbox Code Playgroud)

产生以下输出:

-123.456,78
-123,456.78
Run Code Online (Sandbox Code Playgroud)

我原以为它会跟随这个国家,因为如果我在国内,无论我说英语还是意大利语,那个国家的数字都用小数点分隔符作为逗号.

我的问题是双重的:

  1. 有谁知道为什么这种行为遵循语言?
  2. 更重要的是,任何人都可以提供有关如何修改Java中的默认行为以遵循该语言的详细信息吗?

谢谢.

java locale decimal-point number-formatting

8
推荐指数
2
解决办法
2万
查看次数

如何修复小数分隔符有问题的应用程序

这篇文章是关于C#和.Net的,但有些信息对其他技术很有价值.

因为我记得,因为解析十进制数字的风格不同,我一直遇到崩溃的应用程序或游戏问题.它经常发生,从CAD应用程序,库到网页.我不确定这是无知还是缺乏知识,但这真的很烦人.

有什么问题?是一篇关于它的维基文章,但它很简短:

这是一张地图,显示世界各地使用的小数点分隔符(小数点). 不同小数分隔符的地图

小数标记:

  • 期间 - 蓝色
  • 逗号 - 绿色
  • 非西方阿拉伯数字 - 红色
  • 未知 - 灰色

大多数欧洲,南美洲写1 000 000,00或1000000,00有时1.000.000,00与"帝国"相反(标记为蓝色)写入1,000,000.00

让我来谈谈我上个月遇到的所有问题.

  1. 网页上的数字难以阅读:让我们看一下观看次数最多的YT视频.它向我展示了390159851.超过一百万的数字很难读,数量级是多少?是39毫升还是390?
  2. 适用于Windows Phone 7的 Mirosoft XNA示例:有一个非常简洁的类可解析XML文件以生成XNA动画

    /// <summary>
    /// Loads animation setting from xml file.
    /// </summary>
    private void LoadAnimiationFromXML()
    {
        XDocument doc = 
                  XDocument.Load("Content/Textures/AnimationsDefinition.xml");
        XName name = XName.Get("Definition");
        var definitions = doc.Document.Descendants(name);
    
    
            if (animationDefinition.Attribute("Speed") != null)
            {
                animation.SetFrameInvterval(TimeSpan.FromMilliseconds(
                    double.Parse(animationDefinition.Attribute("Speed").Value)));
            }
    
    Run Code Online (Sandbox Code Playgroud)

    double.Parse抛出异常,一个简单的灵魂就是使用XmlConvert.ToDouble();或解析InvariantCulture.

  3. 使用CSV文件将输入向量存储为CSV的.Net应用程序 - 也会抛出.

  4. 另一个在类中有一些解析的.Net应用程序 - 抛出. …

.net c# localization decimal-point

8
推荐指数
1
解决办法
5993
查看次数

格式化包含带前导零的小数点的数字

我想用前导零格式化带小数点的数字.

这个

>>> '3.3'.zfill(5)
003.3
Run Code Online (Sandbox Code Playgroud)

考虑所有数字甚至小数点.python中是否只有一个函数只考虑整个部分?

我只需要格式化不超过五位小数的简单数字.此外,使用%5f似乎考虑尾随而不是前导零.

python decimal-point string-formatting

8
推荐指数
4
解决办法
2万
查看次数

格式化浮动以进行显示时,限制小数位数和总位数

我需要最有效地在有限宽度的区域中打印浮点值.我正在使用一个NSNumberFormatter,并且我将小数点后面的两个数字设置为默认值,这样当我有一个像234.25它的数字一样打印时:234.25.但是当我有1234.25我希望它打印为:1234.3,并且 11234.25应该打印11234.

我需要在该点后最多两位数,如果我在该点之后有数字,则最多总共五位数,但如果整数部分有更多,则还应打印超过五位数.

我看不到限制总位数的能力NSNumberFormatter.这是否意味着我应该用这种方式编写自己的函数来格式化数字?如果是这样,那么获取数字的整数和小数部分中的数字位数的正确方法是什么?我也更喜欢使用CGFLoat,而不是NSNumber避免额外的类型转换.

cocoa-touch decimal-point objective-c nsnumberformatter

8
推荐指数
2
解决办法
5763
查看次数

使用多个小数点(.)对Oracle中的记录进行排序

更新:

ORACLE VERSION 10G

我有一个Oracle如下记录列表,这些记录实际上是各种书籍
的部分.记录以下面的格式生成

[主题].[子主题].[第一级] ....... [最后一级]

Sections
--------
1
7.1
6.2 
7.1
7.4
6.8.3
6.8.2
10
1.1
7.6
6.1
11
8.3
8.5
1.1.2
6.4
6.6
8.4
1.1.6
6.8.1
7.7.1
7.5
7.3
Run Code Online (Sandbox Code Playgroud)

我想订购如下

 1
 1.1
 1.1.2
 1.1.6
 6.2    
 6.4    
 6.5    
 6.6    
 6.7    
 6.8.1    
 6.8.2    
 6.8.3    
 7.2    
 7.3    
 7.4    
 7.5    
 7.6    
 7.7.1    
 7.7.2    
 8.3    
 8.4    
 8.5
 10
Run Code Online (Sandbox Code Playgroud)

但由于该字段不是numeric datatype排序结果,所以这样的东西

1
10
1.1
1.1.2
1.1.6
....
.....
8.5
Run Code Online (Sandbox Code Playgroud)

我怎样才能对它们进行排序 由于多个小数点,我无法将它们转换为数字.

是否有任何功能oracle支持这种分类技术

sql sorting oracle decimal-point oracle10g

8
推荐指数
2
解决办法
2911
查看次数

双字符串转换和语言环境

一个常见的国际问题是字符串中表示的双值的转换.这个东西在很多地方都有发现.

从调用的csv文件开始

comma separated
Run Code Online (Sandbox Code Playgroud)

要么

character separated
Run Code Online (Sandbox Code Playgroud)

因为有时它们会被存储起来

1.2,3.4
5.6,6.4
Run Code Online (Sandbox Code Playgroud)

在英语地区或

1,2;3,4
5,6;6,4
Run Code Online (Sandbox Code Playgroud)

例如德国地区.

从这个背景来看,有必要知道大多数std ::方法都依赖于语言环境.因此在德国,他们会将"1,2"读作1.2并将其写回"1,2",但使用英语操作系统时,它将"1,2"读为1并将其写回为"1".

由于语言环境是应用程序的全局状态,因此将其切换到其他设置并不是一个好主意.当我必须在英语机器上读取德语CSV文件或反之亦然时,我们遇到了一些问题.

在所有机器上编写行为相同的代码也很困难.C++流允许每个流的区域设置.

class Punctation : public numpunct<wchar_t>
{
public:

  typedef wchar_t char_type;
  typedef std::wstring string_type;

  explicit Punctation(const wchar_t& decimalPoint, std::size_t r = 0) : 
    decimalPoint_(decimalPoint), numpunct<wchar_t>(r)
  {
  }

  Punctation(const Punctation& rhs) : 
    decimalPoint_(rhs.decimalPoint_) 
  {
  }

protected:

  virtual ~Punctation() 
  {
  };

  virtual wchar_t do_decimal_point() const 
  { 
    return decimalPoint_; 
  }

private:

  Punctation& operator=(const Punctation& rhs);

  const wchar_t decimalPoint_;
};

...

std::locale newloc(std::locale::classic(), new Punctation(L','));
stream.imbue(newloc);
Run Code Online (Sandbox Code Playgroud)

将允许您使用std …

c++ locale decimal decimal-point

7
推荐指数
1
解决办法
2879
查看次数

你可以让TextField <BigDecimal>接受这两个,和.作为小数分隔符?

在Wicket应用程序中,我有一个十进制数字文本字段:

 TextField<BigDecimal> f = 
     new TextField<BigDecimal>("f", new PropertyModel<BigDecimal>(model, "share"));
Run Code Online (Sandbox Code Playgroud)

我希望它始终接受两者.(点)和,(逗号)作为小数点分隔符(无论浏览器的语言环境设置如何).

为了显示该值,使用会话的语言环境[在我们的例子中强制为"fi"( - >逗号)],但在这里我对该字段接受的输入感兴趣.

我的问题是,我是否必须将字段更改为TextField<String>,并手动转换为域对象的类型(BigDecimal)?或者是否有某种使用方法TextField<BigDecimal>(允许例如使用Wicket的MinimumValidator或RangeValidator),并且仍然接受两个小数分隔符?

java wicket decimal-point bigdecimal

7
推荐指数
1
解决办法
4688
查看次数