如何在 Octave 中获取环境小数点分隔符

Posted

技术标签:

【中文标题】如何在 Octave 中获取环境小数点分隔符【英文标题】:How to get the environment decimal separator in Octave 【发布时间】:2018-11-07 19:42:30 【问题描述】:

我需要将 Octave 中的环境小数分隔符分配给变量。

例如,如果电脑设置为美国格式

>> decsep
ans = .

相反,如果您从具有欧洲十进制格式的电脑运行脚本,则输出将是

>> decsep
ans = ,

【问题讨论】:

只是为了确认,这只是为了打印目的,对吧?我非常怀疑 octave 在代码或默认输出方面利用了这种区别。因此,这与 octave 本身无关,更多的是与底层操作系统有关;我将您的问题解释为“有没有办法从 Octave 中获取底层操作系统依赖于语言环境的小数点字符”? 【参考方案1】:

可以使用Java获取小数点分隔符:

Format  = javaMethod( "getInstance", "java.text.DecimalFormat" );
Symbols = javaMethod( "getDecimalFormatSymbols", Format );
Sep     = javaMethod( "getDecimalSeparator", Symbols )

您也可以使用以下 PowerShell(powershell.exe 或 pwsh.exe)脚本:

[~, s] = system("pwsh -command (Get-Culture).NumberFormat.NumberDecimalSeparator");
Sep = s(1);

【讨论】:

太棒了,它使用 powershell 命令而不是 pwsh 工作!【参考方案2】:

在 Linux 上,您可以使用:

[~, s] =  system('locale decimal_point'); %returns decimal separator and a '↵'
decsp = s(1); %Required answer   

【讨论】:

非常感谢您的回答!不幸的是,我正在从 Windows 运行 Octave,并且我试图运行您的脚本,但似乎 Windows 中的 'locale decimal_point' 不是一个有效的参数......很遗憾,您的解决方案非常干净! ;) 我认为这不会起作用,因为 GNU Octave 会更改其进程的语言环境(因此system .. locale 将始终返回“.”)。请参阅此处hg.octave.org/octave/file/stable/libinterp/corefcn/…(从评论中我猜其他软件产品也是如此)

以上是关于如何在 Octave 中获取环境小数点分隔符的主要内容,如果未能解决你的问题,请参考以下文章

如何获取 toLocaleString() 方法的小数和千位分隔符?

如何在 Android 上正确获取小数分隔符

无论语言环境如何,我如何强制使用点而不是逗号的 Swift Decimal Pad?

双倍小数分隔符 WPF

如何在 Python 中获取 PATH 环境变量分隔符?

如何在 Python 中获取 PATH 环境变量分隔符?