我想将公斤转换为磅和盎司,例如,如果用户输入 10 公斤,则该函数应返回 22 磅和 0.73 盎司
有任何想法吗?
考虑以下F#代码:
type ILinear =
interface
end
type IMetric =
interface
end
[<Measure>] type cm =
interface ILinear
interface IMetric
[<Measure>] type m =
interface ILinear
interface IMetric
[<Measure>] type time
Run Code Online (Sandbox Code Playgroud)
我想使用这些接口作为对度量类型进行分组的方法,并且作为允许"任何度量"和"特定度量"之间的一般性级别的方式 - 类似于:
(* Yes, I know this syntax is probably incorrect *)
let rate (distance:float<'u:#ILinear,#IMetric>) (time:float<time>) =
distance/time
Run Code Online (Sandbox Code Playgroud)
我意识到这可能会推动可能性的限制,但我只是好奇,如果这是可能的,如果是这样,语法将是什么.正如我所说,这是使用接口作为一个穷人的混合.
CGPoint, CGSize 和 CGRect 的单位是什么;NSSize、NSPoint 和 NSRect?
我意识到你可以表达与单位维度的关系,比如
[<Measure>] type cc = cm^3
Run Code Online (Sandbox Code Playgroud)
然后进行有意义的计算.
给定一些度量单位类型,
[<Measure>] type m
Run Code Online (Sandbox Code Playgroud)
是否可以在与另一个单位数量的关系中定义一个单位?例如,
// doesn't compile
[<Measure>] type mm = 0.001<m>
// later
let length = 500.0<mm>
let length2 = 0.5<m>
printfn "%A" (length = length2) // prints true
Run Code Online (Sandbox Code Playgroud) 我在浏览C++ Core Guidlines文档时偶然发现了以下示例:
例
Run Code Online (Sandbox Code Playgroud)change_speed(double s); // bad: what does s signify? // ... change_speed(2.3);一个更好的方法是明确双重的意义(旧速度的新速度或增量?)和使用的单位:
Run Code Online (Sandbox Code Playgroud)change_speed(Speed s); // better: the meaning of s is specified // ... change_speed(2.3); // error: no unit change_speed(23m / 10s); // meters per second我们本可以接受一个普通(无单位)双精度作为delta,但这很容易出错.
关于最后一行代码,在该特定页面上没有提到该语法的含义,它看起来对我来说是陌生的.
经过几个小时的浪费投入搞清楚这可能是一个预定义的"用户定义"文字的标准库,并且更多地了解它们,我试图找出这个特定文字的定义,但是这里提到了 's' 和少数几个其他文字,我没有找到关于'm'的信息.
关于SO 还有这个问题,但我认为那里的答案似乎已经完全过时了.
问:标准库预定义的用户定义文字"m"在哪里定义*?
*甜美,甜蜜的头韵.
我正在玩一个应用程序,粗略地说,这是一种建筑行业的建模应用程序.将来我希望用户可以同时使用SI单位和英制单位.根据我的理解,美国建筑行业习惯于在指定测量时使用几分之一英寸,例如3 1/2英寸 - 而在SI中我们写3.5,而不是3 1/2.我正在寻找一种方法在我的软件中使用这些不同的系统 - 存储它们,对它们进行计算等,不仅解析用户输入的内容.它应该能够以他输入的方式向用户显示测量值,同时能够用其他测量 - 例如增加3厘米到1 1/2英寸.因此,如果用户绘制5英尺长的墙和3米的另一个墙,则应在用户选择的默认单位系统中显示总测量值.
我还没有确定应该为用户输入数据添加多少灵活性; 例如,如果他进入1英尺14英寸,那么下次显示测量值时应该是2英尺2英寸吗?然而,在我决定这样的事情之前,我正在寻找一种以精确的形式存储测量值的方法,这就是我的问题所在.
我正在使用C++,我看过Boost.Units,但这似乎没有提供处理分数的方法.
简单的选择是将所有内容转换为毫米,但舍入错误将导致无法返回到用户输入的精确测量值(如果他在英制测量中输入).所以我需要更复杂的东西.
现在我正在使用一个暂定名为"距离"的类,看起来在概念上如下:
class Distance
{
public:
Distance(double value);
// operators +, -, *, /
Distance operator+(const Distance& that);
...etc...
std::string StringForm(); // Returns a textual form of the value
Distance operator=(double value);
private:
<question: what should go here?>
}
Run Code Online (Sandbox Code Playgroud)
这清楚地表明了我的问题所在.最明显的事情是有一个枚举,说明这个距离是存储SI还是英制单位,并且有字段(可能是双倍)存储米,厘米和毫米(如果它是以SI为单位,英尺和英寸)这是帝国的.然而,这将使该类的实现乱丢if(SI)else ...,并且在内存中非常浪费.另外,我必须为脚和英寸存储分子和分母,以便能够精确地存储1/3",例如.
因此,根据我的设计要求,我正在寻找关于如何解决这些问题的一般设计建议.当然,如果有一个已经完成这些事情的C++库,或者我可以看到另一种语言的库来复制概念,那就太好了.
我正在试验gamestudio A8,而3d世界中使用的单位是quant.
我的问题是.一米多少量?
我想在sketchup中制作一些模型,然后在那里使用米.我可以将模型转换为mdl.
问题是.动画和移动物体时.我需要知道一米内有多少个数量.
我还希望尺寸与互联网上的其他型号相匹配.
我有一个名为的方法,RateOfChange它接受两个相隔一秒读取的值,并返回结果.
对于两个位置,它返回速度,对于两个速度,它返回加速度,对于两个能量值,它返回焦耳/秒等.
这在物理上是可行的,但是度量单位不允许我这样做 - 在第一次使用时,该方法与指定类型有关:
let RateOfChangeWithTime (value1, value2) = (value2 - value1) / 1.0<SI.s>
let velocity = RateOfChangeWithTime(2.0<SI.m>, 1.0<SI.m>)
let acceleration = RateOfChangeWithTime(3.0<SI.m/SI.s>, 2.0<SI.m/SI.s>)
Run Code Online (Sandbox Code Playgroud)
该行velocity =导致该方法被约束float<SI.m> -> float<SI.m>/float<SI.s>,当然这对于速度是正确的,但是行acceleration =...然后无法编译,因为它传入float<SI.m/SI.s>的方法不期望.
我希望RateOfChangeWithTime对传入的类型保持不变,但只返回一个除以秒的度量单位.
这似乎更符合真实的现场情况,这可能吗?(我正试图在更复杂的情况下这样做 - 请参阅此处(http://taumuon-jabuka.blogspot.com/2010/11/f-units-of-measure-with-reactive.html)
我正在做一些工作,比较一段时间内某些气体浓度的插值fft,其中不均匀采样,使用相同数据的lomb-scargle周期图.我正在使用scipy的fft函数来计算傅里叶变换,然后将其模数平方以得到我认为的功率谱密度,以十亿分之一(ppb)平方为单位.
我可以得到lomb-scargle图几乎与FFT的精确模式相匹配,但从不相同的幅度,FFT功率谱密度总是更高,即使我认为lomb-scargle功率是功率谱密度.现在我正在使用的lomb代码:http://www.astropython.org/snippet/2010/9/Fast-Lomb-Scargle-algorithm,将数据集标准化,取消平均值并除以数据方差的2倍,因此,我以相同的方式对FFT数据进行了归一化,但幅度仍然不匹配.
因此我做了一些更多的研究,发现标准化的坟墓疤痕能力可以无法完成,因此我不能将这些情节匹配.这引出了我的两个问题:
什么单位(如果有的话)是标准化的lim-scargle perioogram的功率谱密度?
在幅度和模式方面,我如何将我的fft情节与我的lomb-scargle情节相匹配?
谢谢.
我知道这篇文章和这个库,但他们没有帮助我解决下面的这些具体案例。我如何解析如下测量值:
我有如下字符串;
"Square 10 x 3 x 5 mm"
"Round 23/22; 24,9 x 12,2 x 12,3"
"Square 10x2"
"Straight 10x2mm"
Run Code Online (Sandbox Code Playgroud)
我正在寻找一个 Python 包或某种方式来获得如下结果;
>>> a = amazing_parser.parse("Square 10 x 3 x 5 mm")
>>> print(a)
10 x 3 x 5 mm
Run Code Online (Sandbox Code Playgroud)
同样地;
>>> a = amazing_parser.parse("Round 23/22; 24,9x12,2")
>>> print(a)
24,9 x 12,2
Run Code Online (Sandbox Code Playgroud)
我还尝试使用“ner_ontonotes_bert_mult”模型使用“命名实体识别”。但结果如下:
>>> from deeppavlov import configs, build_model
>>> ner_model = build_model(configs.ner.ner_ontonotes_bert_mult, download=True)
>>> print(ner_model(["Round 23/22; 24,9 x 12,2 x 12,3"]))
<class …Run Code Online (Sandbox Code Playgroud)