新功能/增强功能的描述
添加一个切换按钮,用于禁用输入数字的格式要求,这样我们就可以使用类似123,456.78和123 456,78这样的数字。请注意,小数部分的句点和逗号是可互换的。
何时会使用这个功能?
我是一个拥有英俄双语键盘布局和英文区域格式的人。因此,当我从数字小键盘输入数字时,如果我要输入"123.45",或者"123,45",那么就会分别以英文和小数格式进行浮点数格式化。这就是提议的功能所在,为用户提供一个切换按钮,禁用格式化,将"2.5"和"2,5"视为"两半",而不是"两半"和"二十五"。
8条答案
按热度按时间oipij1gg1#
更新:我开始调试,问题似乎出在NumberTranslator类上(在这里被使用),它将数字格式化为与所选区域设置相符的格式,而不仅仅是像我最初想的那样,仅由CalculateEngine处理。因此,我的测试数字123.4567,89在main.cs中创建
var input
后读作123.456789。实际上,我不确定如何在不关闭计算器模块的“翻译到区域设置”系统的情况下解决这个问题,我认为这个功能是出于某种原因而存在的。tp5buhyn2#
@evinnichenko
有一个插件设置可以选择你需要的英文或区域输入格式。(PT设置 > PowerToys运行 > 插件 > 计算器插件 > 展开插件设置)
同时支持两者是一个问题,因为我们不知道用户是想要小数分隔还是千位分隔。
zbsbpyhn3#
@htcfreek,这确实是个问题。你提到的设置会覆盖本地数字格式,强制使用en-US(即要求123,456.789而不是例如123 456,789)。我的电脑已经设置了en-US数字格式,所以无论布局如何,所有数字都以
,
作为千位分隔符,以.
作为小数分隔符。问题是,在RU布局中,.
与不同的键绑定(在ANSI中为.>,在俄语中为/?,逗号也从,<移动到Shift + /?),而numpad的.
发送的是,
,因此,无论是否启用该设置,在使用肌肉记忆输入小数时,如果错误地切换了语言,将导致错误的数字格式和计算器失败。我的建议是给用户另一个选项,与你正在谈论的相反,完全忽略格式设置,并利用Mages显然可以不带千位分隔符读取数字的事实。可能通过在Main.cs的第99行左右更改input
,以及与其他依赖标志的操作一起进行,然后将其发送给Mages来实现。说到这个,你知道在哪里可以找到a)如何正确设置选项标志(找不到用于输入自己描述的区域设置文件,可以使用正式的过程来完成它)以及b)如何在调试启动时从VS中修复一连串的“无法加载XXX.dll”警告窗口吗?
oaxa6hgo4#
要解决这个问题,以便在所有区域设置中都能正常工作,而不受语言对的影响,可以考虑修改
GetSplitRegex()
方法,使其能够适应所有区域设置。但是,由于这可能会影响其他用户,即使这个标志是可选的,所以需要谨慎操作。首先,可以尝试获取当前系统的区域设置,然后根据区域设置来调整
GetSplitRegex()
方法。例如:这样,当调用
GetSplitRegex()
方法时,它将根据当前系统的区域设置来选择适当的分隔符正则表达式。这应该可以在大多数情况下解决问题,但可能仍然需要针对某些特殊情况进行调整。btqmn9zl5#
感谢你关注这个问题。我认为如果我们能找到一个解决方案,使其变得智能化,这将是一个很大的质量提升。
目前我看不到你在最后一条评论中的问题?有什么你需要了解的吗?否则我建议你创建/打开一个草稿PR,这样我们都可以看到。
i34xakig6#
关于如何最好地解决这个问题,在其他人看来,目前我的解决方案只适用于特定的对(ru-en是其中之一),而不是所有像我希望的那样。在那之前,我发现你可以设置自定义分隔符,这样你的数字就可以看起来像1-234\5=1,234.5。
是的,现在我会打开PR,即使我认为它还没有完全准备好。
xdyibdwo7#
这与"使用英文格式"的设置密切相关,我担心这仍然会很复杂。
3qpi33ja8#
相关但相反。"使用英文格式"强制你无论在哪个地区都使用en-US数字格式,而这旨在允许你使用任何符号来自任何地区,以防你掌握第二语言并用它来输入计算机所在地区的数字。