Julia 《朱莉娅》中的“大”;123“;宏、函数还是其他什么?

Julia 《朱莉娅》中的“大”;123“;宏、函数还是其他什么?,julia,arbitrary-precision,Julia,Arbitrary Precision,作为Julia本月(2018年9月)的新成员,我刚刚习惯了最初不熟悉的宏的“@”符号和具有可变输入的函数的“!”符号。我是否正确地假设这些仅仅是供人类阅读的文体符号,它们并没有真正向编译器提供任何信息 我是在以下代码的上下文中提出这一点的,这些代码似乎与Julia中的宏、函数或其他任何东西的样式都不匹配。我特别想问一下下面的大“1234”: 我的问题是:什么是大“1234” 编辑:我想我是根据网站上的评论得到答案的 请注意,由于十进制文字在解析时会转换为浮点数,因此BigFloat(2.1)可能

作为Julia本月(2018年9月)的新成员,我刚刚习惯了最初不熟悉的宏的“@”符号和具有可变输入的函数的“!”符号。我是否正确地假设这些仅仅是供人类阅读的文体符号,它们并没有真正向编译器提供任何信息

我是在以下代码的上下文中提出这一点的,这些代码似乎与Julia中的宏、函数或其他任何东西的样式都不匹配。我特别想问一下下面的大“1234”:

我的问题是:什么是大“1234”

编辑:我想我是根据网站上的评论得到答案的

请注意,由于十进制文字在解析时会转换为浮点数,因此BigFloat(2.1)可能不会产生您期望的结果。您可能更喜欢通过解析或使用大字符串文字从字符串初始化常量

julia> BigFloat(2.1)
2.100000000000000088817841970012523233890533447265625

julia> big"2.1"
2.099999999999999999999999999999999999999999999999999999999999999999999999999986"
因此,基于上述注释,big“1234”中的big是一个“大字符串文字”


编辑2:上面是答案的开始,但下面接受的答案更完整。

这些是非标准字符串文字。它们告诉编译器应该通过名为
@xyz\u str
的宏函数解析
xyz“somestring”

BigFloat(2.1)
big“2.1”
之间的区别在于前者确实将“numeric”literal 2.1的标准
Float64
表示形式转换为
BigFloat
,但后者直接解析字符串
“2.1”
使用宏
@big_str
计算BigFloat表示

您还可以定义非标准字符串文字。
LaTeXStrings.jl
例如,使用它可以更轻松地键入LaTeX公式


请看:

这些是非标准字符串文本。它们告诉编译器应该通过名为
@xyz_str
的宏函数解析
xyz“somestring”

BigFloat(2.1)
big“2.1”
之间的区别在于前者确实将“numeric”literal 2.1的标准
Float64
表示形式转换为
BigFloat
,但后者直接解析字符串
“2.1”
使用宏
@big_str
计算BigFloat表示

您还可以定义非标准字符串文字。
LaTeXStrings.jl
例如,使用它可以更轻松地键入LaTeX公式


请看:

另外,“@”不是一种风格选择,阿飞。解释器/编译器发现了@,并且该对象被解释为宏。此外,我也不会将“!”称为风格选择,这是一种强烈鼓励的命名约定,因为没有其他方式来传达函数是否可用的重要信息是否改变它的参数。@TasoPaStylianou,谢谢你的澄清。另外,“@”不是一种风格选择,afaik。解释器/编译器发现了@,该对象被解释为一个宏。此外,我也不会将“!”称为一种风格选择,这是一种强烈鼓励的命名约定,因为没有其他方法可以转换这是一个函数是否改变其参数的重要信息。@TasosPapastylianou,谢谢你的澄清。我一直都更喜欢Julia。谢谢你的回答!我一直都更喜欢Julia。谢谢你的回答!
julia> BigFloat(2.1)
2.100000000000000088817841970012523233890533447265625

julia> big"2.1"
2.099999999999999999999999999999999999999999999999999999999999999999999999999986"