将小数分隔符从“,”(逗号)转换为“。” (点)例如“7,5”到“7.5”

Posted

技术标签:

【中文标题】将小数分隔符从“,”(逗号)转换为“。” (点)例如“7,5”到“7.5”【英文标题】:Convert decimal separator from ',' (comma) to '.' (dot) e.g. "7,5" to "7.5" 【发布时间】:2014-03-28 09:42:15 【问题描述】:

是的。我知道。这些是本地化设置...

但我不会告诉我的客户仅为我的应用更改本地化设置。

那么如何转换这些数字呢?或者如何更改给定范围的数字格式。 (此处需要点,用户可以输入逗号或点,甚至是逗号分隔的数字,例如 1,000,000.00 ...)

编辑: 通过 CStr() 绕过整个问题,并传递字符串。

【问题讨论】:

此链接可能有帮助:msdn.microsoft.com/en-us/library/office/… 这部分解决了我的问题。现在数字实际上是“7.5”但是..“7,5”在vba中将是“7”。 :|如何强制用户输入带点的数字? 您为什么要这样做?你想达到什么目的?请描述一个典型的场景。 【参考方案1】:

如果这纯粹是为了显示目的,那么您可以在单元格上使用自定义格式字符串。然后,您的用户可以继续使用他们习惯于输入数字的本地化设置。我认为更改本地化设置不是一个好主意,因为您的客户可能会错误地输入数字。

这是使用自定义格式字符串格式化数字的一般方式。

╔═════════════╦══════════════════════════╦═══════════════╗
║ To display  ║            As            ║ Use this code ║
╠═════════════╬══════════════════════════╬═══════════════╣
║ 1234.59     ║ 1234.6                   ║ ####.#        ║
║             ║                          ║               ║
║ 8.9         ║ 8.9                      ║ #.000         ║
║             ║                          ║               ║
║ 0.631       ║ 0.6                      ║ 0.#           ║
║             ║                          ║               ║
║ 12          ║ 12                       ║ #.0#          ║
║             ║                          ║               ║
║ 1234.568    ║ 1234.57                  ║ #.0#          ║
║             ║                          ║               ║
║ 44.398      ║   44.398                 ║ ???.???       ║
║ 102.65      ║ 102.65                   ║ ???.???       ║
║ 2.8         ║     2.8                  ║ ???.???       ║
║             ║ (with aligned decimals)  ║               ║
║             ║                          ║               ║
║ 5.25        ║ 5 1/4                    ║ # ???/???     ║
║ 5.3         ║ 5  3/10                  ║ # ???/???     ║
║             ║ (with aligned fractions) ║ # ???/???     ║
╚═════════════╩══════════════════════════╩═══════════════╝

这里是微软关于区域格式字符串信息的链接

(2016 年 8 月 11 日更新链接)

https://support.office.com/en-gb/article/Create-or-delete-a-custom-number-format-78f2a361-936b-4c03-8772-09fab54be7f4

【讨论】:

试过这个它根本不起作用。 1234,56 需要按照 OP 的要求显示为 1234.56,但使用 ####.## 将其显示为 1.234,这是不正确的。 @GuidoG 我不知道...我不明白为什么 1234,56 会显示为 1.234。他们甚至不是同一个数字.. 所以答案中的代码不起作用。它仍然显示 .作为小数分隔符和 , 作为千位分隔符。

以上是关于将小数分隔符从“,”(逗号)转换为“。” (点)例如“7,5”到“7.5”的主要内容,如果未能解决你的问题,请参考以下文章

将逗号小数分隔符转换为数据框中的点

将逗号小数分隔符转换为数据框中的点

正则表达式将数字转换为逗号分隔的数字,可选两位小数

支持小数点和小数点逗号的字符串到浮点数转换

用 TextField 中的小数分隔符替换逗号

将 GST 编号字段的小数分隔符更改为逗号