我需要在PHP中添加,乘以和比较货币值,并且需要确保它精确到一分钱.
一种方法是将所有东西存储在浮点数中,在每次操作之前和之后使用回合,并在比较相等时使用思维机器epsilon.相当笨重的imho.
另一种方法是将整个事物存储为整数数据类型中的分数,另外还记得在我使用数据库的任何时候来回转换(mysql,我使用的是十进制数据类型).imho,Inelegant,以及许多错误陷阱.
另一种方法是发明我自己的"数据类型",将所有值存储在字符串("34.12")中并创建我自己的数学替换函数.这些函数会在内部将值转换为整数,进行计算并再次输出结果字符串.非常复杂,imho.
我的问题:在PHP中使用货币值的最佳做法是什么?谢谢!
Firefox和Safari似乎都没有正确呈现具有特定宽度的按钮:
<form>
<button>foo</button><br>
<button style="width=200px;height:200px">baz</button>
</form>
Run Code Online (Sandbox Code Playgroud)
按钮baz将使用指定的高度但默认宽度进行渲染.Firefox和Safari都有相同的结果.
这是设计的吗?我怎么能克服这个?
我正试图在一个大的姓氏列表中搜索部分开始的匹配.所以Wein*应该找到Weinberg,Weinkamm等.
我可以通过创建一个特殊字段并添加来完成此操作
<filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="50" preserveOriginal="1"/>
到schema.xml中的类型规范.当我将上面的行仅添加到索引分析器并将其留空以供查询分析器使用时,我可以通过搜索special_field进行搜索:Wein并获得预期结果.
现在我看到solr也有一个*-syntax.EdgeNGramFilterFactory和*-syntax之间的联系是什么?
我是在正确地做事还是有更好,更规律的方式?
谢谢!
我正在改进 PayPal IPN 侦听器。我已阅读规格,但仍有一些悬而未决的问题。众所周知,如果您收到通知,您必须在第二个通道上连接到 PayPal,向他们发送收到的数据,PayPal 将回答“已验证”或“无效”。在某些情况下,PayPal 会重新发送通知,直到收到我们的答复。PayPal 有一个名为“IPN History”的调试页面。
我至少有一次收到无效消息,而“IPN 历史记录”显示正常状态“已发送”。
问题 1:PayPal 不检查我是否在第二个通道上连接到他们来确定消息是否正确发送,这是否正确?
Q2:我假设 PayPal 只查看从我们这里收到的 http 状态标头(例如“200 OK”)来决定在“IPN 历史记录”中显示什么状态。它是否正确?
Q3:我还假设 PayPal 仅查看 http 状态标头来决定是否必须重新发送消息。那是对的吗?
我收到的无效 PayPal 付款现在在 PayPal 中显示为正常付款。但随后并没有进一步的通知。
问题 4:我认为此行为是 PayPal 内部问题,正确的方法是告诉 PayPal 有错误,以便它在 5 分钟后发送另一个通知。那是对的吗?
问题 5:如果是这样,如果我收到 INVALID,我必须将什么 http 状态标头发送回 PayPal,以确保 PayPal 稍后重新发送通知?
谢谢!