如何在 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() 方法的小数和千位分隔符?